简述*.aspx文件中@Page指令的作用

【考点】
@Page指令的理解。
【出现频率】
★★★★☆
【解答】
通常情况下,*.aspx文件(无论是单文件模型还是隐藏文件模型编写)都由@Page指令开始,通过对这个指令的各种属性进行设置,可以告知ASP.NET运行库处理页面的各种细节。假设名为NetWeb的WEB项目中,Index.aspx网页由C#语言编写服务端代码,其@Page指令最常用的设置如以下代码所示。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="NetWeb._Index" %>
在这个@Page指令中,“Language”属性指明所使用的托管语言类型。“AutoEventWireup”属性可设置Index.aspx页面的事件是否自动绑定,其值为布尔类型。而“CodeBehind”属性指定包含与页关联的类的已编译文件的名称,这个属性不能在运行时使用。“Inherits”定义本页面所继承的代码隐藏类,该类的以分部类方式定义于“CodeBehind”属性所指向的*.cs文件中,该类派生于System.Web.UI.Page类。
【分析】
本题考查面试者对ASP.NET页面模型的理解是否深刻,开发经验是否丰富。@Page指令只能在WEB窗体页中使用,每个.aspx 文件只能包含一条@Page指令。并且每条@Page指令只能定义一个Language属性,因为每页只能使用一种托管语言,如C#或者VB。如果有一个想应用于所有页的公共属性(例如,希望在所有页上启用调试),应考虑在Web.config文件中启用相应的功能,而不是向每个单独的页添加Debug属性。
“AutoEventWireup”属性设置为“true”时,服务端的事件将自动绑定。例如页面的Load事件所绑定的事件处理方法为Page_Load,页面中有ID为“MyBtn”控件,其“Click”事件的处理方法即为MyBtn_Click。这种命名方法非常方便,如果编程者需要某个事件的处理方法使用自定义名称,则只需设置“AutoEventWireup”属性为“false”即可。
“CodeBehind”属性是.NET 1.1的页面中常用的属性,而在.NET 2.0中则提倡使用“CodeFile”属性指定该源文件的名称。现在,用VS 2008创建的WEB应用程序模板再次回归.NET1.1的方式,使用“CodeBehind”属性指定被隐藏的代码文件。使用WEB应用程序的这种方式会生成对应的*.designer.cs文件,用于存放服务器端控件的声明。“CodeFile”属性指定本网页引用的代码隐藏文件的路径,它和“CodeBehind”属性是有区别的。“CodeBehind”属性指定的是已编译的文件名称,当该*.cs代码编译为*.dll后,部署网站时就不需要这个*.cs文件了,页面可以正常访问。而“CodeFile”属性也是指向*.cs文件,如果网站部署后,*.cs代码已编译为*.dll,当*.cs文件不存在于所部署的网站目录时,页面将报错“文件“/*.aspx.cs”不存在。
“Inherits”属性和以上属性配合使用,当与“CodeBehind”属性一起使用时,如果“Inherits”属性所指定的类没有被编译,那么页面访问将报错“未能加载类型“类名称”。当与“CodeFile”属性一起使用时,则不需要先编译该类,并可直接访问页面。在VS 2008的WEB应用程序项目模板中,默认使用“CodeBehind”属性,所以在访问页面前要编译代码文件。
说明:除此之外,@Page还有其他的属性,如“MasterPageFile”属性用于设置内容页的母版页或嵌套母版页的路径,“ResponseEncoding”属性用于指示用于包含页内容的HTTP响应的编码方案的名称。还有一些比较重要的属性,如“ValidateRequest”属性、“EnableViewState”属性、“Buffer”属性等,将在后面的相关题目中讲述。

你可能感兴趣的:(简述*.aspx文件中@Page指令的作用)