彼らの言い回しは少し紛らわしいと思います。ディレクティブ内の値は本質的にプロパティであるというのは正しいことです。実際、これらのASプロパティのほとんどは、オブジェクトモデル内(コードビハインドなど)で設定できます。
protected override void OnInit( EventArgs e )
{
this.EnableViewState = true;
this.MasterPageFile = "~/something.master";
this.Title = "Hello World";
}
それらは、やPage
などの他にいくつかの重要なディレクティブです。これらにも精通していることをお勧めします。Import
Control
編集:Pageディレクティブから設定すると、これらの属性がどこに到達するのか興味があったので、ASP.Netキャッシュを調べました。ご存知かもしれませんが、ページが実行されると、ページはオブジェクトに変換され、次のファイルシステムにキャッシュされます。
c:\ windows \ Microsoft.Net \ Framework [version] \ 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のコメントに従って、私はこれをさらに掘り下げました。ディレクティブ属性は次のように説明できると思います。
ディレクティブの各属性は、次の1つ以上の目的に役立ちます。コンパイラへのヒント(コードビハインドパスなど)、ページをロードするためのヒント(ページが継承するクラスなど)、レンダリングするためのヒントページ(MasterPageFileなど)、および/または作成されるページの各インスタンスに設定するプロパティ(Titleなど)。