Condividi tramite


Controlli del server

di Microsoft

ASP.NET 2.0 migliora i controlli server in molti modi. In questo modulo verranno illustrate alcune delle modifiche dell'architettura al modo in cui ASP.NET 2.0 e Visual Studio 2005 gestisce i controlli server.

ASP.NET 2.0 migliora i controlli server in molti modi. In questo modulo verranno illustrate alcune delle modifiche dell'architettura al modo in cui ASP.NET 2.0 e Visual Studio 2005 gestisce i controlli server.

Visualizzare lo stato

La modifica principale dello stato di visualizzazione in ASP.NET 2,0 è una riduzione significativa delle dimensioni. Si consideri una pagina con soltanto un controllo Calendario. Ecco lo stato di visualizzazione in ASP.NET 1.1.

dDwtMTg1NDkwMjc0Nzt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjs
+O2w8dDxAMDxwPHA8bDxTRDs+O2w8bDxTeXN0ZW0uRGF0ZVRpbWUsIG1
zY29ybGliLCBWZXJzaW9uPTEuMC41MDAwLjAsIEN1bHR1cmU9bmV1dHJ
hbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OTwyMDA1LTE
xLTA4Pjs+Oz4+Oz47Ozs7Ozs7Ozs7Pjs7Pjs+Pjs+Pjs+lkX2YWqfACtP
/VWr8G03pob/+tU=

Di seguito è riportato lo stato di visualizzazione in una pagina identica in ASP.NET 2.0.

/wEPDwULLTEzNjg5MjAxMzgPZBYCAgMPZBYCAgEPPCsAC
gEADxYCHgJTRBYBBgDAEX8OsscIZGRkllfArINjlhvzQX7Xfign2q6HK5E=

Si tratta di un cambiamento piuttosto significativo e considerando che lo stato di visualizzazione viene portato avanti e indietro in rete, questa modifica può offrire agli sviluppatori un aumento significativo delle prestazioni. La riduzione delle dimensioni dello stato di visualizzazione è in gran parte dovuta al modo in cui viene gestita internamente. Tenere presente che lo stato di visualizzazione è una stringa con codifica Base64. Per comprendere meglio la modifica dello stato di visualizzazione in ASP.NET 2.0, si esamineranno i valori decodificati degli esempi precedenti.

Ecco lo stato di visualizzazione 1.1 decodificato:

t<-1854902747;t<;l<i<1>;>;l<t<;l<
i<1>;>;l<t<@0<p<p<l<SD;>;l<l<
System.DateTime, mscorlib, Version=1.0.5000.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089<2005-11-08>;>;>>;
>;;;;;;;;;;>;;>;>>;>>;>Eaj

Questo può sembrare un po' come un insieme di parole senza senso, ma c'è un modello qui. In ASP.NET 1.x sono stati usati singoli caratteri per identificare i tipi di dati e i valori delimitati usando i <> caratteri . Il "t" nell'esempio di stato di visualizzazione precedente rappresenta un Triplet. Triplet contiene una coppia di ArrayLists ("l" rappresenta un oggetto ArrayList). Uno di questi ArrayLists contiene un valore Int32 ("i") con un valore 1 e l'altro contiene un altro Triplet. Triplet contiene una coppia di ArrayLists e così via. L'aspetto importante da ricordare è che si usano triplette che contengono coppie, si identificano i tipi di dati tramite una lettera e si usano i < caratteri e > come delimitatori.

In ASP.NET 2.0 lo stato di visualizzazione decodificato ha un aspetto leggermente diverso.

-1368920138 d 
 d 
 
 
 SD 
 dddWc A ('ڮ

Dovresti notare un cambiamento enorme nell'aspetto dello stato di visualizzazione decodificato. Questo cambiamento ha diverse basi architetturali. Lo stato di visualizzazione in ASP.NET 1.x utilizzava LosFormatter per serializzare i dati. Nella versione 2.0 viene usata la nuova classe ObjectStateFormatter. Questa classe è stata progettata specificamente per facilitare la serializzazione e la deserializzazione dello stato di visualizzazione e dello stato di controllo. (Lo stato del controllo verrà trattato nella sezione successiva). Ci sono molti vantaggi derivanti dal cambiamento del metodo con cui avvengono la serializzazione e la deserializzazione. Uno dei più drammatici è il fatto che a differenza di LosFormatter che usa un TextWriter, ObjectStateFormatter usa binaryWriter. Ciò consente ASP.NET 2.0 di archiviare lo stato di visualizzazione di una serie di byte anziché di stringhe. Prendere, ad esempio, un numero intero. In ASP.NET 1.1, un numero intero richiedeva 4 byte di stato di visualizzazione. In ASP.NET 2.0 lo stesso numero intero richiede solo 1 byte. Sono stati apportati altri miglioramenti per ridurre la quantità di stato di visualizzazione archiviata. I valori DateTime, ad esempio, vengono ora archiviati usando tickCount anziché una stringa.

Come se tutto ciò non fosse sufficiente, è stata prestata particolare attenzione al fatto che uno dei più grandi consumatori del view state in 1.x era il DataGrid e i controlli simili. Uno svantaggio principale dei controlli, come il DataGrid, per quanto riguarda lo stato di visualizzazione è che spesso contiene grandi quantità di informazioni ripetute. In ASP.NET 1.x, le informazioni ripetute venivano semplicemente archiviate più volte e più volte, causando uno stato di visualizzazione gonfio. In ASP.NET 2.0 viene usata la nuova classe IndexedString per archiviare tali dati. Se una stringa viene ripetuta, viene archiviato solo il token per IndexedString e l'indice all'interno di una tabella in esecuzione di oggetti IndexedString.

Stato del controllo

Uno dei principali problemi che gli sviluppatori avevano riguardo allo stato di visuale era la dimensione aggiunta al payload HTTP. Come accennato in precedenza, uno dei maggiori consumatori di stato di visualizzazione è il controllo DataGrid. Per evitare l'enorme quantità di stato di visualizzazione generato da un DataGrid, molti sviluppatori hanno semplicemente disabilitato lo stato di visualizzazione per tale controllo. Sfortunatamente, quella soluzione non era sempre una buona. Lo stato di visualizzazione in ASP.NET 1.x contiene non solo i dati necessari per la funzionalità corretta del controllo. Contiene anche informazioni sullo stato dell'interfaccia utente del controllo. Ciò significa che se si vuole consentire l'impaginazione in un DataGrid, è necessario abilitare lo stato di visualizzazione anche se non sono necessarie tutte le informazioni dell'interfaccia utente che contengono lo stato di visualizzazione. Si tratta di uno scenario all-or-nothing.

In ASP.NET 2.0, lo stato del controllo risolve il problema con l'introduzione dello stato di controllo. Lo stato del controllo contiene i dati assolutamente necessari per la corretta funzionalità di un controllo. A differenza dello stato di visualizzazione, lo stato del controllo non può essere disabilitato. Pertanto, è importante che i dati archiviati nello stato di controllo siano controllati attentamente.

Annotazioni

Lo stato del controllo viene mantenuto insieme allo stato di visualizzazione nel campo modulo nascosto __VIEWSTATE.

Questo video è una guida dettagliata sullo stato di visualizzazione e sullo stato del controllo.

Screenshot del video della procedura dettagliata che descrive i campi dello stato di visualizzazione e dello stato del controllo, mostrando una finestra di Esplora File.

Aprire Full-Screen Video

Per consentire a un controllo server di leggere e scrivere nello stato di controllo, è necessario eseguire tre passaggi.

Passaggio 1: Chiamare il metodo RegisterRequiresControlState

Il metodo RegisterRequiresControlState informa ASP.NET che un controllo deve mantenere lo stato del controllo. Accetta un argomento di tipo Control, che è il controllo che viene registrato.

È importante notare che la registrazione non persiste dalla richiesta alla richiesta. Pertanto, questo metodo deve essere chiamato su ogni richiesta se un controllo deve rendere persistente lo stato di controllo. È consigliabile chiamare il metodo in OnInit.

protected override void OnInit(EventArgs e) { Page.RegisterRequiresControlState(this); base.OnInit(e); }

Passaggio 2: Eseguire l'override di SaveControlState

Il metodo SaveControlState salva le modifiche dello stato del controllo per un controllo dall'ultimo postback. Restituisce un oggetto che rappresenta lo stato del controllo.

Passaggio 3: Eseguire l'override di LoadControlState

Il metodo LoadControlState carica lo stato salvato in un controllo . Il metodo accetta un argomento di tipo Object che contiene lo stato salvato per il controllo.

Conformità XHTML completa

Qualsiasi sviluppatore Web conosce l'importanza degli standard nelle applicazioni Web. Per mantenere un ambiente di sviluppo basato su standard, ASP.NET 2.0 è completamente conforme a XHTML. Di conseguenza, il rendering di tutti i tag viene eseguito in base agli standard XHTML nei browser che supportano HTML 4.0 o versione successiva.

La definizione DOCTYPE in ASP.NET 1.1 è stata la seguente:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN

In ASP.NET 2.0, la definizione DOCTYPE predefinita è la seguente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Se si sceglie, è possibile modificare la conformità XHTML predefinita tramite il nodo xhtmlConformance nel file di configurazione. Ad esempio, il nodo seguente nel file web.config modificherà la conformità XHTML a XHTML 1.0 Strict:

<xhtmlConformance mode="Strict" />

Se si sceglie, è anche possibile configurare ASP.NET per usare la configurazione legacy usata in ASP.NET 1.x come indicato di seguito:

<xhtmlConformance mode="Legacy" />

Rendering adattivo con adattatori

In ASP.NET 1.x il file di configurazione contiene una <sezione browserCaps> che ha popolato un oggetto HttpBrowserCapabilities. Questo oggetto ha consentito a uno sviluppatore di determinare quale dispositivo sta effettuando una determinata richiesta ed eseguire il rendering del codice in modo appropriato. In ASP.NET 2.0 il modello è stato migliorato e ora usa la nuova classe ControlAdapter. La classe ControlAdapter esegue l'override degli eventi nel ciclo di vita del controllo e controlla il rendering dei controlli in base alle funzionalità dell'agente utente. Le funzionalità di un agente utente specifico sono definite da un file di definizione del browser (un file con estensione browser) archiviato nella cartella c:\windows\microsoft.net\framework\v2.0.\CONFIG\Browser.

Annotazioni

La classe ControlAdapter è una classe astratta.

Analogamente alla <sezione browserCaps> in 1.x, il file di definizione del browser usa un'espressione regolare per analizzare la stringa dell'agente utente per identificare il browser richiedente. Definisce funzionalità specifiche per l'agente utente. ControlAdapter esegue il rendering del controllo tramite il metodo Render. Pertanto, se si esegue l'override del metodo Render, non è consigliabile chiamare Render sulla classe di base. In questo modo il rendering può verificarsi due volte, una volta per l'adattatore e una volta per il controllo stesso.

Sviluppo di un adapter personalizzato

È possibile sviluppare un adattatore personalizzato ereditando da ControlAdapter. Inoltre, è possibile ereditare dalla classe astratta PageAdapter nei casi in cui è necessario un adattatore per una pagina. Il mapping dei controlli all'adattatore personalizzato viene eseguito tramite l'elemento <controlAdapters> nel file di definizione del browser. Ad esempio, il codice XML seguente da un file di definizione del browser esegue il mapping del controllo Menu alla classe MenuAdapter:

<controlAdapters> <adapter controlType="System.Web.UI.WebControls.Menu" adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" /> </controlAdapters>

L'uso di questo modello diventa piuttosto semplice per uno sviluppatore di controlli scegliere come destinazione un particolare dispositivo o browser. È anche piuttosto semplice per uno sviluppatore avere un controllo completo sul rendering delle pagine in ogni dispositivo.

Rendering per dispositivo

Le proprietà del controllo server in ASP.NET 2.0 possono essere specificate per dispositivo usando un prefisso specifico del browser. Ad esempio, il codice seguente modificherà il testo di un'etichetta a seconda del dispositivo usato per esplorare la pagina.

<asp:Label ID="lblBrowser" runat="server" Text="You are browsing from an unknown device." ie:Text="You are browsing from Internet Explorer." mozilla:Text="You are browsing from Firefox."> </asp:Label>

Quando la pagina contenente questa etichetta viene visualizzata da Internet Explorer, l'etichetta visualizzerà il testo "You are browsing from Internet Explorer". Quando la pagina viene visualizzata da Firefox, l'etichetta visualizzerà il testo "You are browsing from Firefox". Quando la pagina viene visualizzata da qualsiasi altro dispositivo, verrà visualizzato il messaggio "You are browsing from an unknown device". È possibile specificare qualsiasi proprietà utilizzando questa sintassi speciale.

Impostazione dello stato attivo

Gli sviluppatori di ASP.NET 1.x chiedevano spesso come impostare il focus iniziale su un particolare controllo. Ad esempio, in una pagina di accesso, è utile che la casella di testo per l'ID utente ottenga lo stato attivo quando la pagina viene caricata per la prima volta. In ASP.NET 1.x, questa operazione richiede la scrittura di alcuni script sul lato client. Anche se tale script è un'attività semplice, non è più necessaria in ASP.NET 2.0 grazie al metodo SetFocus. Il metodo SetFocus accetta un argomento che indica il controllo che deve ricevere lo stato attivo. Questo argomento può essere l'ID client del controllo come stringa o il nome del controllo server come oggetto Control. Ad esempio, per impostare il focus iniziale su un controllo TextBox denominato txtUserID al primo caricamento della pagina, aggiungere il codice seguente a *Page_Load*:

if (!IsPostBack) {
    SetFocus(txtUserID);
}

-- oppure

if (!IsPostBack) {
    SetFocus(txtUserID.ClientID);
}

ASP.NET 2.0 usa il gestore Webresource.axd (descritto in precedenza) per rendere una funzione client-side che imposta lo stato attivo. Il nome della funzione lato client è WebForm_AutoFocus come illustrato di seguito:

<script type="text/javascript"> <!-- WebForm_AutoFocus('txtUserID'); // --> </script>

In alternativa, è possibile utilizzare il metodo Focus di un controllo per impostare lo stato attivo iniziale su tale controllo. Il metodo Focus deriva dalla classe Control ed è disponibile per tutti i controlli ASP.NET 2.0. È anche possibile portare il focus su un particolare controllo quando si verifica un errore di convalida. Questa operazione verrà illustrata in un modulo successivo.

Nuovi controlli server in ASP.NET 2.0

Di seguito sono riportati i nuovi controlli server in ASP.NET 2.0. Verranno fornite informazioni più dettagliate su alcuni di essi nei moduli successivi.

Controllo ImageMap

Il controllo ImageMap consente di aggiungere hotspot a un'immagine che può eseguire un postback o navigare verso un URL. Sono disponibili tre tipi di hotspot; CircleHotSpot, RectangleHotSpot e PolygonHotSpot. Gli hotspot vengono aggiunti tramite un editor di raccolte in Visual Studio o a livello di codice. Non è disponibile alcuna interfaccia utente per disegnare hotspot su un'immagine. Le coordinate e le dimensioni o il raggio dell'hotspot devono essere specificate in modo dichiarativo. Non c'è alcuna rappresentazione visiva di un hotspot nell'ambiente di progettazione. Se un hotspot è configurato per passare a un URL, l'URL viene specificato tramite la proprietà NavigateUrl dell'hotspot. Nel caso di un hotspot di postback, la proprietà PostBackValue consente di passare una stringa nel postback che può essere recuperata nel codice lato server.

Screenshot della schermata dell'Editor raccolta HotSpot visualizzata sulla finestra del file Default.aspx.

Figura 1: Editor della raccolta HotSpot in Visual Studio

Controllo BulletedList

Il controllo BulletedList è un elenco puntato che può essere facilmente associato ai dati. L'elenco può essere ordinato (numerato) o non ordinato tramite la proprietà BulletStyle. Ogni elemento dell'elenco è rappresentato da un oggetto ListItem.

Screenshot del menu a discesa delle attività elenco puntato sopra un elenco non ordinato, con l'opzione Scegli sorgente dati evidenziata dal puntatore del mouse.

Figura 2: Controllo BulletedList in Visual Studio

Controllo Campo Nascosto

Il controllo HiddenField aggiunge un campo modulo nascosto alla pagina, il cui valore è disponibile nel codice lato server. Il valore di un campo di modulo nascosto dovrebbe in genere rimanere invariato tra i postback. Tuttavia, è possibile che un utente malintenzionato modifichi il valore prima di eseguire il postback. In questo caso, il controllo HiddenField genererà l'evento ValueChanged. Se si dispone di informazioni riservate nel controllo HiddenField e si vuole assicurarsi che rimanga invariato, è necessario gestire l'evento ValueChanged nel codice.

Controllo FileUpload

Il controllo FileUpload in ASP.NET 2.0 consente di caricare file in un server Web tramite una pagina ASP.NET. Questo controllo è molto simile alla classe ASP.NET 1.x HtmlInputFile con alcune eccezioni. In ASP.NET 1.x, era consigliato controllare se la proprietà PostedFile fosse null per determinare se si disponeva di un file valido. Il controllo FileUpload in ASP.NET 2.0 aggiunge una nuova proprietà HasFile che è possibile usare per lo stesso scopo ed è un po' più efficiente.

La proprietà PostedFile è ancora disponibile per l'accesso a un oggetto HttpPostedFile, ma alcune delle funzionalità di HttpPostedFile sono ora disponibili intrinsecamente con il controllo FileUpload. Ad esempio, per salvare un file caricato in ASP.NET 1.x, chiamare il metodo SaveAs nell'oggetto HttpPostedFile. Usando il controllo FileUpload in ASP.NET 2.0, si deve chiamare il metodo SaveAs direttamente sul controllo FileUpload.

Un'altra modifica significativa nel comportamento 2.0 (e probabilmente la modifica più significativa) è che non è più necessario caricare un intero file caricato in memoria prima di salvarlo. Nella versione 1.x, tutti i file caricati vengono salvati interamente in memoria prima di essere scritti su disco. Questa architettura impedisce il caricamento di file di grandi dimensioni.

In ASP.NET 2.0, l'attributo requestLengthDiskThreshold dell'elemento httpRuntime consente di configurare il numero di kilobyte contenuti in un buffer in memoria prima di essere scritto su disco.

IMPORTANTE: la documentazione MSDN (e la documentazione altrove) specifica che questo valore è in byte (non kilobyte) e che il valore predefinito è 256. Il valore viene effettivamente specificato in Kilobytes e il valore predefinito è 80. Con un valore predefinito pari a 80.000, si garantisce che il buffer non finirà nell'heap di oggetti di grandi dimensioni.

Controllo procedura guidata

È piuttosto comune incontrare sviluppatori ASP.NET che lottano con il tentativo di raccogliere informazioni in una serie di "pagine" usando pannelli o spostandosi da una pagina all'altra. Più spesso di non, lo sforzo è frustrante e richiede molto tempo. Il nuovo controllo Procedura guidata risolve i problemi consentendo passaggi lineari e non lineari in un'interfaccia della procedura guidata con cui gli utenti hanno familiarità. Il controllo Procedura guidata presenta moduli di input in una serie di passaggi. Ogni passaggio è di un tipo specifico specificato dalla proprietà StepType del controllo . I tipi di passaggio disponibili sono i seguenti:

Tipo di passaggio Explanation
Auto La procedura guidata determina automaticamente il tipo di passaggio in base alla relativa posizione all'interno della gerarchia dei passaggi.
Start Il primo passaggio, spesso usato per presentare una dichiarazione introduttiva.
Passo Un passaggio normale.
Termina Il passaggio finale, solitamente utilizzato per presentare un pulsante che conclude la procedura guidata.
Completo Presenta un messaggio che comunica l'esito positivo o negativo.

Annotazioni

Il controllo Procedura guidata tiene traccia del suo stato utilizzando lo stato del controllo di ASP.NET. Pertanto, la proprietà EnableViewState può essere impostata su false senza alcun danno.

Questo video è una procedura dettagliata dell'elemento di controllo Wizard.

Screenshot di un video dimostrativo del controllo Wizard. Viene visualizzata la schermata dei controlli server con una finestra di Microsoft Visual Studio.

Aprire Full-Screen Video

Localizzare il controllo

Il controllo Localize è simile a un controllo Literal. Tuttavia, il controllo Localize dispone di una proprietà Mode che controlla il modo in cui viene eseguito il rendering del markup aggiunto. La proprietà Mode supporta i valori seguenti:

Modalità Explanation
Trasformazione Il markup viene trasformato in base al protocollo del browser che effettua la richiesta.
Passthrough Viene eseguito il rendering del markup così com'è.
Codificare Il markup aggiunto al controllo viene codificato con HtmlEncode.

Controlli MultiView e View

Il controllo MultiView funge da contenitore per i controlli View e il controllo View funge da contenitore (simile a un controllo Pannello) per altri controlli. Ogni visualizzazione in un controllo MultiView è rappresentata da un singolo controllo View. Il primo controllo View in MultiView è view 0, il secondo è view 1 e così via. È possibile cambiare visualizzazione specificando ActiveViewIndex del controllo MultiView.

Controllo di sostituzione

Il controllo Sostituzione viene utilizzato insieme al caching di ASP.NET. Nei casi in cui si desidera sfruttare i vantaggi della memorizzazione nella cache, ma si dispone di parti di una pagina che deve essere aggiornata in ogni richiesta (in altre parole, parti di una pagina esentate dalla memorizzazione nella cache), il componente Di sostituzione offre una soluzione ottimale. Il controllo non rende in realtà alcun output autonomamente. Al contrario, è associato a un metodo nel codice lato server. Quando viene richiesta la pagina, il metodo viene chiamato e il markup restituito viene renderizzato al posto del controllo di sostituzione.

Il metodo a cui è associato il controllo Di sostituzione viene specificato tramite la proprietà MethodName . Tale metodo deve soddisfare i criteri seguenti:

  • Deve essere un metodo statico (condiviso in VB).
  • Accetta un parametro di tipo HttpContext.
  • Restituisce una stringa che rappresenta il markup che deve sostituire il controllo nella pagina.

Il controllo Sostituzione non ha la possibilità di modificare altri controlli nella pagina, ma ha accesso all'oggetto HttpContext corrente tramite il relativo parametro.

Controllo GridView

Il controllo GridView è la sostituzione del controllo DataGrid. Questo controllo verrà trattato in modo più dettagliato in un modulo successivo.

Controllo DetailsView

Il controllo DetailsView consente di visualizzare un singolo record da un'origine dati e di modificarlo o eliminarlo. Viene descritta in modo più dettagliato in un modulo successivo.

Controllo FormView

Il controllo FormView viene usato per visualizzare un singolo record da un'origine dati in un'interfaccia configurabile. Viene descritta in modo più dettagliato in un modulo successivo.

Il controllo AccessDataSource

Il controllo AccessDataSource viene utilizzato per associare dati a un database di Access. Viene descritta in modo più dettagliato in un modulo successivo.

Controllo ObjectDataSource

Il controllo ObjectDataSource viene usato per supportare un'architettura a tre livelli in modo che i controlli possano essere associati a un oggetto business di livello intermedio anziché a un modello a due livelli in cui i controlli sono associati direttamente all'origine dati. Verrà illustrato in modo più dettagliato in un modulo successivo.

Controllo XmlDataSource

Il controllo XmlDataSource viene utilizzato per l'associazione di dati a un'origine dati XML. Viene descritta in modo più dettagliato in un modulo successivo.

Controllo SiteMapDataSource

Il controllo SiteMapDataSource fornisce il data binding per i controlli di spostamento del sito basati su una mappa del sito. Verrà illustrato in modo più dettagliato in un modulo successivo.

Controllo SiteMapPath

Il controllo SiteMapPath visualizza una serie di collegamenti di navigazione comunemente definiti breadcrumb. Viene descritta in modo più dettagliato in un modulo successivo.

Il controllo Menu visualizza i menu dinamici tramite DHTML. Viene descritta in modo più dettagliato in un modulo successivo.

Controllo TreeView

Il controllo TreeView viene utilizzato per visualizzare una visualizzazione albero gerarchica dei dati. Viene descritta in modo più dettagliato in un modulo successivo.

Controllo di accesso

Il controllo Login fornisce un meccanismo per accedere a un sito Web. Viene descritta in modo più dettagliato in un modulo successivo.

Controllo LoginView

Il controllo LoginView consente la visualizzazione di modelli diversi in base allo stato di accesso di un utente. Viene descritta in modo più dettagliato in un modulo successivo.

Controllo Ripristino Password

Il controllo PasswordRecovery viene usato per recuperare le password dimenticate dagli utenti di un'applicazione ASP.NET. Viene descritta in modo più dettagliato in un modulo successivo.

Stato di Accesso

Il controllo LoginStatus visualizza lo stato di accesso di un utente. Viene descritta in modo più dettagliato in un modulo successivo.

Nome utente

Il controllo LoginName visualizza il nome utente di un utente dopo l'accesso a un'applicazione ASP.NET. Viene descritta in modo più dettagliato in un modulo successivo.

CreateUserWizard

CreateUserWizard è una procedura guidata configurabile che consente agli utenti di creare un account di appartenenza ASP.NET da usare in un'applicazione ASP.NET. Viene descritta in modo più dettagliato in un modulo successivo.

ChangePassword

Il controllo ChangePassword consente agli utenti di modificare la password per un'applicazione ASP.NET. Viene descritta in modo più dettagliato in un modulo successivo.

Varie web parts

ASP.NET 2.0 viene fornito con varie web part. Queste informazioni verranno illustrate in dettaglio in un modulo successivo.