2010-10-10 16 views
5

Sto studiando per un esame di certificazione Microsoft e alcune parole per il "contenuto" nell'esame mi hanno confuso. In the MS exam website, sotto Sviluppo Web Form Pagine, si dice per quanto riguarda il contenuto dell'esame ...Definizione di una pagina in .NET

Questo obiettivo può includere, ma non è limitata a: Pagina direttive come ViewState, richiesta di convalida, evento validazione, MasterPageFile; ClientIDMode;

Ho avuto l'impressione che una direttiva di pagina si riferisse alla parola chiave @Page e che i valori associati definiti nella sezione @Pagina fossero attributi/proprietà. Ma la formulazione del contenuto dell'esame implica quasi che gli attributi/proprietà della parola chiave @Page siano direttive.

Qualcuno potrebbe chiarire questo per me?

risposta

2

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).

+2

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. –

+1

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. –

2

La direttiva di pagina è una combinazione di proprietà che è possibile impostare direttamente sull'oggetto Page stesso e le istruzioni per il compilatore di asp.net.

Questa pagina mostra un elenco di tutte le proprietà http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx.

Citazione dalla pagina: Definisce gli attributi specifici della pagina (file .aspx) utilizzati dal parser e dal compilatore di pagine ASP.NET.

"" Queste nuove pagine mostrerà un elenco di tutte le proprietà e un po 'di una spiegazione delle proprietà/attributi:

Il vecchio link indicato in precedenza, http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx, non è più utile. I collegamenti più recenti sono, per obiettivi, a http://msdn.microsoft.com/en-us/library/t8syafc7(v=vs.100).aspx e http://msdn.microsoft.com/en-us/library/vstudio/ydy4x04a(v=vs.100).aspx, per tutti coloro che cercano queste informazioni.

+0

+1 per aggiungere dettagli al mio post. Penso che ciascuno degli attributi imposta una proprietà sulla pagina, funge da suggerimento per il compilatore o funge da suggerimento per il runtime. Ad esempio, MasterPageFile determina quale master viene unito con ASPX in fase di esecuzione e questa proprietà può essere specificata anche in OnInit (o OnPreInit, non ricordo quale). –

+0

le proprietà sono tutte utilizzate in fase di compilazione, quindi sono specifiche del compilatore o impostano alcune proprietà sull'oggetto Page. Se si tenta di utilizzare aspnet_compiler.exe per precompilare il proprio sito Web, si scoprirà che i file .aspx diventano obsoleti, quindi non sono disponibili informazioni di runtime, poiché non sono disponibili file .aspx da leggere. –

Problemi correlati