Penso che la loro verbosità sia un po 'confusa. Hai ragione nel dire che i valori all'interno della direttiva sono essenzialmente proprietà. In effetti, è possibile impostare la maggior parte di queste proprietà AS all'interno del modello di oggetto (ad esempio nel codebehind).
protected override void OnInit(EventArgs e)
{
this.EnableViewState = true;
this.MasterPageFile = "~/something.master";
this.Title = "Hello World";
}
loro sono alcune importanti direttive, oltre Page
, come Import
e Control
. Suggerirei di conoscere anche questi.
EDIT: Ero curioso di sapere dove questi attributi finiscono quando impostati dalla direttiva Page, quindi ho dato un'occhiata alla cache ASP.Net. Come probabilmente sapete, quando viene eseguita una pagina che si trasforma in un oggetto e memorizzato nella cache del file system in:
c: \ windows \ Microsoft.Net \ Framework [versione] \ 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 = [email protected]__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
Ciò che ho trovato interessante è che proprietà come quella che si potrebbe impostare nella direttiva Pagina non sono incluse in questi file generati automaticamente. Questo mi porta a credere che la direttiva nella sua completezza sia elaborata su ogni richiesta e non sia compilata insieme alla pagina.
EDIT # 2: commento di Per BurningIce qui di seguito, ho approfondito ulteriormente. Credo che gli attributi della direttiva possano essere descritti come segue.
Ciascuno degli attributi di una direttiva serve uno o più dei seguenti scopi: Un suggerimento per il compilatore (come il percorso codebehind), un suggerimento per caricare la pagina (come ad esempio la classe dalla quale eredita la pagina) , un suggerimento per rendere la pagina (come MasterPageFile) e/o una proprietà da impostare su ogni istanza della pagina che viene creata (come Titolo).
fonte
2010-10-10 01:55:18
Ci sono delle proprietà sulla direttiva della pagina che non corrispondono a una proprietà sull'oggetto Page, come Codebehind o codefile, quindi rendono di fatto che non può essere compilato. Leggendo questa pagina http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx si ha una chiara impressione che molti degli attributi della direttiva sono più come istruzioni per il compilatore. –
Giusto per chiarire che nessuno degli attributi nella direttiva viene utilizzato in fase di esecuzione, è tutto in fase di compilazione. Questo è chiaro per vedere se si tenta di utilizzare il aspnet_compiler.exe per precompilare il tuo sito web. Scoprirai che i tuoi file .aspx diventano obsoleti e quindi non ci sono informazioni di runtime, dato che non ci sono file .aspx da leggere. –