Controlli server
da Microsoft
ASP.NET 2.0 migliora i controlli server in molti modi. In questo modulo verranno illustrate alcune 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 modifiche dell'architettura al modo in cui ASP.NET 2.0 e Visual Studio 2005 gestisce i controlli server.
Stato di visualizzazione
Il cambiamento principale nello stato di visualizzazione in ASP.NET 2,0 è una riduzione drammatica delle dimensioni. Prendere in considerazione una pagina con solo 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=
Ecco lo stato di visualizzazione in una pagina identica in ASP.NET 2.0.
/wEPDwULLTEzNjg5MjAxMzgPZBYCAgMPZBYCAgEPPCsAC
gEADxYCHgJTRBYBBgDAEX8OsscIZGRkllfArINjlhvzQX7Xfign2q6HK5E=
Questo è un cambiamento piuttosto significativo e considerando che lo stato di visualizzazione viene portato indietro e indietro sul filo, questa modifica può dare agli sviluppatori un aumento significativo delle prestazioni. La riduzione delle dimensioni dello stato di visualizzazione è in gran parte dovuta al modo in cui lo gestiamo internamente. Tenere presente che lo stato di visualizzazione è una stringa codificata Base64. Per comprendere meglio la modifica dello stato di visualizzazione in ASP.NET 2.0, è possibile esaminare i valori decodificati dagli 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 potrebbe sembrare un po 'come gibberish, 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. L'esempio "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 oggetto Int32 ("i") con un valore 1 e l'altro contiene un altro Triplet. Triplet contiene una coppia di ArrayLists e così via. La cosa importante da ricordare è che usiamo Triplets che contengono coppie, identificaamo i tipi di dati tramite una lettera e usiamo 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 ('ڮ
Si dovrebbe notare una modifica enorme nell'aspetto dello stato di visualizzazione decodificato. Questo cambiamento ha diverse basi dell'architettura. Visualizzare lo stato in ASP.NET 1.x ha usato LosFormatter per serializzare i dati. In 2.0 viene usata la nuova classe ObjectStateFormatter. Questa classe è stata progettata in modo specifico per facilitare la serializzazione e la deserializzazione dello stato di visualizzazione e dello stato di controllo. Lo stato del controllo verrà illustrato nella sezione successiva. Ci sono molti vantaggi ottenuti modificando il metodo in base al quale si svolge 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 per archiviare lo stato di visualizzazione di una serie di byte anziché stringhe. Prendere, ad esempio, un intero. In ASP.NET 1.1, è necessario un numero intero di 4 byte di stato di visualizzazione. In ASP.NET 2.0, lo stesso 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 archiviati usando un TickCount anziché una stringa.
Come se tutto ciò non fosse sufficiente, particolare attenzione è stata prestata al fatto che uno dei più grandi consumatori di stato di visualizzazione in 1.x era DataGrid e controlli simili. Uno svantaggio principale dei controlli, ad esempio DataGrid, in cui lo stato di visualizzazione è preoccupato è che spesso contiene grandi quantità di informazioni ripetute. In ASP.NET 1.x, le informazioni ripetute sono state semplicemente archiviate e superate con conseguente aumento dello stato di visualizzazione. In ASP.NET 2.0 viene usata la nuova classe IndexedString per archiviare tali dati. Se una stringa si ripete, è sufficiente archiviare il token per IndexedString e l'indice all'interno di una tabella in esecuzione di oggetti IndexedString.
Stato del controllo
Uno dei principali grip che gli sviluppatori avevano con lo stato di visualizzazione erano le dimensioni aggiunte al payload HTTP. Come accennato in precedenza, uno dei più grandi consumer 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, questa soluzione non era sempre una buona. Lo stato di visualizzazione in ASP.NET 1.x contiene non solo i dati necessari per la corretta funzionalità del controllo. Contiene anche informazioni relative allo stato dell'interfaccia utente del controllo. Ciò significa che se si vuole consentire la 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. È uno scenario all-or-nothing.
In ASP.NET 2.0, lo stato di controllo risolve il problema in modo piacevole tramite l'introduzione dello stato di controllo. Lo stato del controllo contiene i dati assolutamente necessari per la funzionalità appropriata 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 con attenzione.
Nota
Lo stato del controllo viene mantenuto insieme allo stato di visualizzazione nel campo modulo nascosto __VIEWSTATE.
Questo video è una procedura dettagliata dello stato di visualizzazione e dello stato del controllo.
Per consentire a un controllo server di leggere e scrivere sullo 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 di controllo. Accetta un argomento di tipo Control che è il controllo registrato.
È importante notare che la registrazione non persiste dalla richiesta alla richiesta. Pertanto, questo metodo deve essere chiamato in ogni richiesta se un controllo deve mantenere 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 post indietro. 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 sugli standard, ASP.NET 2.0 è completamente conforme a XHTML. Pertanto, tutti i tag vengono sottoposti a rendering 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 di web.config cambierà 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 tramite 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 il dispositivo che effettua una richiesta specifica e di eseguire il rendering del codice in modo appropriato. In ASP.NET 2.0 il modello è 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 file con estensione browser) archiviato nella cartella c:\windows\microsoft.net\framework\v2.0.^\CONFIG\Browser.
Nota
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 di richiesta. Essi definiscono 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 Rendering nella classe 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 adattatore personalizzato
È possibile sviluppare una scheda personalizzata ereditando da ControlAdapter. Inoltre, è possibile ereditare dalla classe astratta PageAdapter nei casi in cui è necessario un adattatore per una pagina. Il mapping dei controlli alla scheda personalizzata 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 facile per uno sviluppatore di controlli di destinazione di un determinato dispositivo o browser. È anche abbastanza semplice per uno sviluppatore avere il controllo completo sulla modalità di rendering delle pagine in ogni dispositivo.
rendering Per-Device
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 cambierà 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 esplorata da Internet Explorer, l'etichetta visualizzerà il testo che indica "Si sta esplorando da Internet Explorer". Quando la pagina viene esplorata da Firefox, l'etichetta visualizzerà il testo "Stai passando da Firefox". Quando la pagina viene esplorata da qualsiasi altro dispositivo, verrà visualizzato "Si sta passando da un dispositivo sconosciuto". Qualsiasi proprietà può essere specificata usando questa sintassi speciale.
Impostazione dello stato attivo
ASP.NET gli sviluppatori 1.x hanno spesso chiesto come impostare lo stato attivo iniziale su un determinato controllo. Ad esempio, in una pagina di accesso, è utile avere la casella di testo ID utente ottenere lo stato attivo quando la pagina viene caricata per la prima volta. In ASP.NET 1.x, questa operazione richiede la scrittura di uno script 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 lo stato attivo iniziale su un controllo TextBox denominato txtUserID quando la pagina viene prima caricata, aggiungere il codice seguente a Page_Load:
if (!IsPostBack) {
SetFocus(txtUserID);
}
--O
if (!IsPostBack) {
SetFocus(txtUserID.ClientID);
}
ASP.NET 2.0 usa il gestore Webresource.axd (illustrato in precedenza) per eseguire il rendering di una funzione lato client 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 usare il metodo Focus per 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 impostare lo stato attivo su un determinato 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 nuovi controlli server in ASP.NET 2.0. Verranno illustrati in dettaglio alcuni di essi nei moduli successivi.
Controllo ImageMap
Il controllo ImageMap consente di aggiungere hotspot a un'immagine che può avviare un post indietro o passare a 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 il disegno di hotspot in un'immagine. Le coordinate e le dimensioni o il raggio dell'hotspot devono essere specificati in modo dichiarativo. Non esiste anche una rappresentazione visiva di un hotspot nella finestra 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 postback, la proprietà PostBackValue consente di passare una stringa nel postback che può essere recuperato nel codice lato server.
Figura 1: Editor raccolta HotSpot in Visual Studio
Controllo Elenco puntato
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 nell'elenco è rappresentato da un oggetto ListItem.
Figura 2: Controllo Elenco puntato in Visual Studio
Controllo HiddenField
Il controllo HiddenField aggiunge un campo modulo nascosto alla pagina, il valore di cui è disponibile nel codice lato server. Il valore di un campo modulo nascosto è generalmente previsto che rimanga invariato tra i postback. Tuttavia, è possibile che un utente malintenzionato cambi il valore prima di eseguire il postback. In questo caso, il controllo HiddenField genererà l'evento ValueChanged. Se si hanno 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 è abbastanza simile alla classe htmlInputFile ASP.NET ASP.NET con alcune eccezioni. In ASP.NET 1.x, è consigliabile verificare che la proprietà PostedFile sia selezionata per null per determinare se si dispone 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 chiamerebbe il metodo SaveAs nel controllo FileUpload stesso.
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. In 1.x, qualsiasi file caricato viene salvato interamente in memoria prima di essere scritto 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 Kilobyte e il valore predefinito è 80. Se si dispone di un valore predefinito pari a 80K, si garantisce che il buffer non finirà nell'heap di oggetti di grandi dimensioni.
Controllo procedura guidata
È abbastanza comune incontrare ASP.NET sviluppatori che lottano con il tentativo di raccogliere informazioni in una serie di "pagine" usando pannelli o trasferendo dalla pagina alla pagina. Più spesso di non, l'impresa è una frustrante e richiede tempo. Il nuovo controllo Procedura guidata risolve i problemi consentendo passaggi lineari e non lineari in un'interfaccia 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 | Spiegazione |
---|---|
Auto | La procedura guidata determina automaticamente il tipo di passaggio in base alla posizione all'interno della gerarchia dei passaggi. |
Avvio | Il primo passaggio, spesso usato per presentare un'istruzione introduttiva. |
Passaggio | Un passaggio normale. |
Finish | Il passaggio finale, in genere usato per presentare un pulsante per completare la procedura guidata. |
Operazione completata | Presenta un messaggio che comunica l'esito positivo o negativo. |
Nota
Il controllo Procedura guidata tiene traccia dello stato usando ASP.NET stato del controllo. Pertanto, la proprietà EnableViewState può essere impostata su false senza alcun danno.
Questo video è una procedura dettagliata del controllo Procedura guidata.
Localizzare il controllo
Il controllo Localize è simile a un controllo Letterale. Il controllo Localize ha tuttavia una proprietà Mode che controlla il modo in cui viene eseguito il rendering del markup aggiunto. La proprietà Mode supporta i valori seguenti:
Modalità | Spiegazione |
---|---|
Trasformazione | Il markup viene trasformato in base al protocollo del browser che effettua la richiesta. |
Passthrough | Il rendering del markup viene eseguito come è. |
Codificare | Il markup aggiunto al controllo viene codificato usando HtmlEncode. |
Controlli MultiView e View
Il controllo MultiView funge da contenitore per i controlli Visualizza e il controllo Visualizza funge da contenitore (molto 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 è visualizzato 0, il secondo è la visualizzazione 1 e così via. È possibile cambiare visualizzazione specificando ActiveViewIndex del controllo MultiView.
Controllo sostituzione
Il controllo Sostituzione viene usato insieme alla memorizzazione nella cache di ASP.NET. Nei casi in cui si vuole sfruttare la 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 esentata dalla memorizzazione nella cache), il componente Sostituzione offre una soluzione ottimale. Il controllo non esegue effettivamente il rendering di alcun output in modo autonomo. È invece associato a un metodo nel codice lato server. Quando viene richiesta la pagina, viene chiamato il metodo e viene eseguito il rendering del markup restituito al posto del controllo di sostituzione.
Il metodo a cui è associato il controllo Sostituzione viene specificato tramite la proprietà MethodName . Questo 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 qualsiasi altro controllo 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à descritto 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 descritto più dettagliatamente 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 descritto più dettagliatamente in un modulo successivo.
Controllo AccessDataSource
Il controllo AccessDataSource viene usato per associare dati a un database di Access. Viene descritto più dettagliatamente 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 vengono associati direttamente all'origine dati. Verrà descritto in modo più dettagliato in un modulo successivo.
Controllo XmlDataSource
Il controllo XmlDataSource viene usato per associare dati a un'origine dati XML. Viene descritto più dettagliatamente in un modulo successivo.
Controllo SiteMapDataSource
Il controllo SiteMapDataSource fornisce data binding per i controlli di spostamento del sito in base a una mappa del sito. Verrà descritto in modo più dettagliato in un modulo successivo.
Controllo SiteMapPath
Il controllo SiteMapPath visualizza una serie di collegamenti di spostamento comunemente denominati breadcrumbs. Viene descritto più dettagliatamente in un modulo successivo.
Controllo Menu
Il controllo Menu visualizza i menu dinamici usando DHTML. Viene descritto più dettagliatamente in un modulo successivo.
Controllo TreeView
Il controllo TreeView viene usato per visualizzare una visualizzazione albero gerarchica dei dati. Viene descritto più dettagliatamente in un modulo successivo.
Controllo di accesso
Il controllo Login fornisce un meccanismo per accedere a un sito Web. Viene descritto più dettagliatamente 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 descritto più dettagliatamente in un modulo successivo.
Controllo PasswordRecovery
Il controllo PasswordRecovery viene usato per recuperare le password dimenticate dagli utenti di un'applicazione ASP.NET. Viene descritto più dettagliatamente in un modulo successivo.
LoginStatus
Il controllo LoginStatus visualizza lo stato di accesso di un utente. Viene descritto più dettagliatamente in un modulo successivo.
LoginName
Il controllo LoginName visualizza il nome utente di un utente dopo l'accesso a un'applicazione ASP.NET. Viene descritto più dettagliatamente 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 descritto più dettagliatamente in un modulo successivo.
ChangePassword
Il controllo ChangePassword consente agli utenti di modificare la password per un'applicazione ASP.NET. Viene descritto più dettagliatamente in un modulo successivo.
Varie WebParts
ASP.NET 2.0 viene fornito con varie web part. Questi verranno illustrati in dettaglio in un modulo successivo.