2009-08-25 8 views

risposta

12

Vi rimando a questo MSDN Page (pagina ASP.NET classe Panoramica).

Quando la pagina viene compilata, ASP.NET genera una classe parziale in base al file aspx ; questa classe è una classe parziale del file di classe code-behind. Il file di classe parziale generato contiene dichiarazioni per i controlli della pagina. Questa classe parziale abilita lo file code-behind da utilizzare come parte di una classe completa senza richiedendo di dichiarare esplicitamente i comandi .

vedere questa tabella:

alt text http://img30.imageshack.us/img30/7692/msdnchart.gif

In questo modo si dispone di una classe che contiene la logica e una classe che contiene roba designer. Al momento della compilazione è generato nel suo complesso.

+1

Questo è uno di quei grafici "lascia fare un grafico da qualcosa che non dovrebbe essere un grafico". – womp

+0

"Il modello di ereditarietà per le pagine code-behind è leggermente più complesso di quello per le pagine a file singolo" Sezione in quell'articolo MSDN è stato molto utile per capire meglio questo grafico –

4

Perché ci sono altre parti del (roba designer) di classe che è nascosto da parte dello sviluppatore

Per esempio, al posto di questo

public MyBasePage : System.Web.UI.Page 
{ 
    ... 
    protected System.Web.UI.Label lblName; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    ... 
} 

ASP.NET crea tali dichiarazioni in diversi file fisici, lasciando questo

public partial class MyBasePage : System.Web.UI.Page 
{ 
    ... 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    ... 
} 

Maggiori informazioni:

+0

potresti elaborare? è simile al file del designer winforms? – andrewWinn

+0

@andrewWinn - sì, è equivoco al file di progettazione winforms - in ASP.NET 1.1 ci sarebbero tutte le dichiarazioni di controllo nella parte superiore del code-behind, e quindi una regione compressa nella parte inferiore commentata lungo le linee di " Designer generato, non modificare "in cui sono stati collegati tutti gli eventi. –

+0

@jaun, il link che hai fornito non funziona. – ShaileshDev

1

La dichiarazione parziale consente di scrivere il codice in altri file: è sufficiente inserirlo nello stesso spazio dei nomi e denominare la classe allo stesso modo e verranno trattati come se si trovassero nello stesso file. È fantastico per aggiungere funzionalità ai file generati. Lo uso più frequentemente per aggiungere funzioni/proprietà ai miei oggetti LinqToSql.

+0

Inoltre aiuta a mantenere tutto il codice brutto generato da te e modificandolo accidentalmente. Devi essere molto più deciso ora per modificarlo .... :) – klabranche

1

L'altro motivo per i file parziali è quello di gestire il caso in cui parte della definizione di classe è generata da uno strumento (e può essere rigenerata ad un certo punto) e il resto della classe è implementato dall'utente.

In questi casi, il non utilizzo di una classe parziale comporterebbe la sovrascrittura del codice o il processo di generazione che ha difficoltà a svolgere il proprio lavoro (se è possibile farlo).

Con le classi parziali, il codice generato può essere facilmente rigenerato senza toccare il codice.

Un altro buon esempio di questo è quando si utilizzano le classi DataContext per LINQ-to-SQL: le cose veramente intelligenti vengono generate in un set di file di classi parziali e si possono fornire implementazioni - per la convalida ecc. - nell'altro parziale classe, al sicuro sapendo che la rigenerazione non distruggerà il tuo lavoro.

0

Aspx.cs utilizza la classe PARZIALE poiché i controlli (ad esempio TextBox, GridView) a cui si accede in questa classe sono dichiarati nel file .Aspx (ad es.Fisicamente Un altro file) in modo che una classe contenga la dichiarazione di controllo (file .aspx) e un'altra logica aziendale basata sui controlli dichiarati sul file .aspx. quando vengono compilati i considerati nel loro complesso una singola classe.

Problemi correlati