con*_*att 5 .net asp.net syntax page-directives
我正在研究微软认证考试,考试中"内容"的一些措辞让我很困惑.在MS考试网站的 " 开发Web表单页面"下,它说明了考试内容......
此目标可能包括但不限于:页面指令,如ViewState,请求验证,事件验证,MasterPageFile; 的ClientIDMode;
我的印象是页面指令引用了@Page关键字,而@Page部分中定义的关联值是属性/属性.但是考试内容的措辞几乎意味着@Page关键字的属性/属性是指令.
有人可以帮我解决这个问题吗?
我认为他们的措辞有点令人困惑。您是正确的,指令中的值本质上是属性。事实上,您可以在对象模型中(例如在代码隐藏中)设置大部分 AS 属性。
protected override void OnInit( EventArgs e )
{
this.EnableViewState = true;
this.MasterPageFile = "~/something.master";
this.Title = "Hello World";
}
Run Code Online (Sandbox Code Playgroud)
除此之外还有几个重要的指令Page,例如Import和Control。我建议也熟悉这些。
编辑:我很好奇这些属性在从 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
Run Code Online (Sandbox Code Playgroud)
我发现有趣的是,这些自动生成的文件中不包含诸如 Page 指令中可能设置的属性。这让我相信该指令的完整性是在每个请求上处理的,并且不与页面一起编译。
编辑#2:根据下面 BurningIce 的评论,我进一步深入研究了这一点。我相信指令属性可以描述如下。
指令上的每个属性都有以下一个或多个用途:对编译器的提示(例如代码隐藏路径)、加载页面的提示(例如页面继承自哪个类)、渲染的提示页面(例如 MasterPageFile)和/或要在创建的页面的每个实例上设置的属性(例如标题)。
| 归档时间: |
|
| 查看次数: |
4440 次 |
| 最近记录: |