5

我正在准备 Microsoft 认证考试,考试中“内容”的一些措辞让我感到困惑。在MS 考试网站Developing Web Form Pages下,它说关于考试的内容......

这个目标可能包括但不限于:ViewState、请求验证、事件验证、MasterPageFile等页面指令;客户端ID模式;

我的印象是页面指令引用了@Page 关键字,而@Page 部分中定义的关联值是属性/属性。但是考试内容的措辞几乎暗示了@Page关键字的属性/属性是指令。

有人可以帮我解决这个问题吗?

4

2 回答 2

2

我认为他们的措辞有点令人困惑。您是正确的,指令中的值本质上是属性。事实上,您可以在对象模型中设置大部分这些 AS 属性(例如,在代码隐藏中)。

 protected override void OnInit( EventArgs e )
 {
        this.EnableViewState = true;
        this.MasterPageFile = "~/something.master";
        this.Title = "Hello World";
 }

它们还有几个重要的指令Page,例如ImportControl。我建议也熟悉这些。

编辑:我很好奇这些属性在从 Page 指令设置时会在哪里结束,所以我查看了 ASP.Net 缓存。您可能知道,当一个页面被执行时,它会变成一个对象并缓存在文件系统中:

c:\windows\Microsoft.Net\Framework[版本]\Temporary ASP.Net Files\

        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        private void @__BuildControlTree(content_shared_toolbarcontrol_ascx @__ctrl) {
            System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n<div class=\"toolbar\">\r\n    "));

            #line default
            #line hidden
            global::System.Web.UI.HtmlControls.HtmlGenericControl @__ctrl1;

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__ctrl1 = this.@__BuildControldivDelete();

            #line default
            #line hidden

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__parser.AddParsedSubObject(@__ctrl1);

            #line default
            #line hidden

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n    <div class=\"toolbarSpacer\"></div>\r\n    <div class=\"toolbarButton\">"));

et cetera

我发现有趣的是,这些自动生成的文件中不包含诸如可能在 Page 指令中设置的属性。这使我相信指令的完整性是在每个请求上处理的,而不是与页面一起编译的。

编辑#2:根据下面 BurningIce 的评论,我对此进行了进一步的研究。我相信指令属性可以描述如下。

指令中的每个属性都用于以下一个或多个目的:编译器提示(例如代码隐藏路径)、加载页面的提示(例如页面继承自哪个类)、渲染提示页面(例如 MasterPageFile)和/或要在创建的每个页面实例上设置的属性(例如 Title)。

于 2010-10-10T01:55:18.947 回答
2

page 指令是您可以直接在 Page-object 本身上设置的属性和对 asp.net 编译器的指令的混合。

此页面显示所有属性的列表http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx

来自页面的引用:定义 ASP.NET 页面解析器和编译器使用的页面特定(.aspx 文件)属性。

"" 这些新页面将显示所有属性的列表以及对属性/属性的一些解释:

上面提到的旧链接http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx不再有用。按目标,最新链接位于http://msdn.microsoft.com/en-us/library/t8syafc7(v=vs.100).aspxhttp://msdn.microsoft.com/en-us/ library/vstudio/ydy4x04a(v=vs.100).aspx,供所有寻求此信息的人使用。

于 2010-10-10T02:29:51.473 回答