ASP.NET页的客户端
text_aspx 的 HTTP 处理程序。
针 对给定请求的 HTTP 处理程序类的动态创建过程对于每个页面只发生一次,即在应用程序运行期间内该页 面第一次被请求时进行创建(尽管来说,使用批编译时,只要应用程序内有一个页面收到了第一次请求即 可生成处理程序)。如果应用程序重新启动或 Web 服务器上的页面源文件发生了修改,则动态创建的程 序集将无效并被替换。图 2 显示了从基础 Page 类直到处理用户请求的动态生成类等页类的层次结构。 图 2 Page 类的层次结构 ASP.NET 运行时通过分析相应 .aspx 文件的源代码来创建动态页类的 Visual Basic 或 C# 源代码。 每个包含 runat="server" 的标记都将映射到一个服务器控件实例。任何其他文本则映射到文 字控件,并按原样一字不差地发出。Register 指令(如果有)帮助解析指向非标准控件的标记。返回到 客户端浏览器的标记是通过将页面中每个服务器控件所发出的标记组合到一起而形成的。请注意,每个页 通常都会发出标记,而且通常是 HTML 标记。但是,这不是必需的,并且 ASP.NET 页可以输出它需要的 任何数据。 分析 HTML 客户端代码 图 3 显示了图 1 中的示例页的 HTML 输出。在该 HTML 中,服务器端 .aspx 页中看不到任何有 Page 指令的迹象。而是逐字复制 !DOCTYPE 指令。图 1 中的第一个 runat="server" 块是 <form> 标记。这意味着 Page 和 <form> 之 间的任何文本都将按原样发出。在服务器上动态创建的页类的源代码中,此文本将转换成 LiteralControl 类的一个实例。<form> 标记类似以下方式发出: <form name="form1" method="post" action="Test.aspx" id="form1"> Figure 3 测试页的 HTML 标记 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head><title>Test page</title></head> <body> <form name="form1" method="post" action="Test.aspx" id="form1"> <div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDw ... eeY=" /> </div> <div> <input name="TextBox1" type="text" id="TextBox1" /> <input type="submit" name="Button1" value="Click me" id="Button1" /> </div> <hr /> <h1><span id="Msg"></span></h1> <div> <input type="hidden" name="__EVENTVALIDATION" id="__ EVENTVALIDATION" value="/wE ... u7" /> </div> </form> </body> </html> <form runat="server" ...> 标记将转换为 HtmlForm 类的实 例。该控件类没有相应的属性可用于设置输出标记中的 action 属性。action 属性被硬编码到当前页的 URL 中。此行为是基于 ASP.NET 平台基础的。请注意,ID 属性同一个与 name 属性值相同的值形成一对 。 <asp:textbox> 标记转换为 HTML 中的 <input type="text"> 元素。 在这里,将添加 name 属性,以便与原来的 ID 属性匹配。请注意,如果省略 ID 属性,则可能会收到 Visual Studio 2005 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |