 pages with code written in an interpreted scripting language such as VBScript. All of the benefits, such as a managed execution environment, are available to this code, and of course the entire .NET Framework class library is available. Legacy unmanaged code can be called through the .NET interoperability services, which are discussed in Chapter 17.
ASP.NET provides a significant innovation known as server controls. These controls have special tags such as <asp:textbox>. Server-side code interacts with these controls, and the ASP.NET runtime generates straight HTML that is sent to the Web browser. The result is a programming model that is easy to use and yet produces standard HTML that can run in any browser.
Although the World Wide Web is built on standards, the unfortunate fact of life is that browsers are not compatible and have special features. A Web page designer then has the unattractive options of either writing to a lowest common denominator of browser, or else writing special code for different browsers. Server controls help remove some of this pain. ASP.NET takes care of browser compatibility issues when it generates code for a server control. If the requesting browser is upscale, the generated HTML can take advantage of these features, otherwise the generated code will be vanilla HTML. ASP.NET takes care of detecting the type of browser.
SEPARATION OF CODE AND CONTENT
Typical ASP pages have a mixture of scripting code interspersed with HTML elements. In ASP.NET there is a clean separation between code and presentation content. The server code can be isolated within a single <SCRIPT RUNAT="SERVER"> ... /SCRIPT> block or, even better, placed within a "code-behind" page. We will discuss code-behind pages later in this chapter. If you would like to see an example right away, you can examine the second example program HelloCodebehind.aspx, with code in the file HelloCodebe-hind.aspx.vb. (These files are in the top-level chapter directory.)
HTTP is a stateless protocol. Thus, if a user enters information in various controls on a form and sends this filled-out form to the server, the information will be lost if the form is displayed again, unless the Web application provides special code to preserve this state. ASP.NET makes this kind of state preservation totally transparent. There are also convenient facilities for managing other types of session and application state.