Cenni preliminari sulla sintassi delle pagine Web ASP.NET
Aggiornamento: novembre 2007
Le pagine Web ASP.NET sono create in modo simile alle pagine Web HTML statiche, che non includono l'elaborazione sul lato server, ma contengono elementi supplementari riconosciuti ed elaborati da ASP.NET durante l'esecuzione della pagina. Le caratteristiche che distinguono le pagine Web ASP.NET dalle pagine statiche HTML (o di altro tipo) sono le seguenti:
Il file ha estensione ASPX e non HTM, HTML o altro. Se l'estensione del file è ASPX, la pagina viene elaborata da ASP.NET.
Nota: Il mapping delle estensioni dei file ad ASP.NET viene eseguito in Internet Information Services (IIS). Per impostazione predefinita, le pagine ASPX sono eseguite da ASP.NET, a differenza di quelle HTM e HTML.
Presentano una direttiva @ Page facoltativa o un'altra direttiva, adatta al tipo di pagina che si desidera creare.
Presentano un elemento form configurato correttamente per ASP.NET. L'elemento form è richiesto solo se si desiderano utilizzare i valori dei controlli contenuti nella pagina durante l'elaborazione della medesima.
Controlli server Web.
Codice lato server per aggiungere un codice personalizzato alla pagina.
Nota: Affinché le pagine siano conformi agli standard XHTML, è necessario includere alcuni elementi aggiuntivi, come l'elemento DOCTYPE. Per informazioni, vedere ASP.NET e XHTML.
Nelle sezioni seguenti sono fornite ulteriori informazioni su ciascuno di questi elementi.
È possibile rinominare una pagina HTML con l'estensione ASPX in modo da poterla eseguire come pagina Web ASP.NET. Tuttavia, se la pagina non include un'elaborazione server, non è necessario aggiungere l'estensione ASPX poiché questa crea un sovraccarico nell'elaborazione della pagina.
Esempio di pagina Web ASP.NET
Nell'esempio di codice riportato di seguito viene illustrata una pagina che comprende gli elementi di base di una pagina Web ASP.NET. La pagina contiene testo statico, come nel caso di una pagina HTML, nonché altri elementi specifici di ASP.NET. Questi ultimi sono evidenziati.
Nota: |
---|
Per maggiore chiarezza, la configurazione della pagina di esempio non è conforme a XHTML. Per informazioni, vedere ASP.NET e XHTML. |
Nota sulla sicurezza: |
---|
La pagina di esempio include una casella di testo che accetta l'input dell'utente e rappresenta quindi una potenziale minaccia alla sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script. |
<%@ Page Language="VB" %>
<html>
<script > Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Label1.Text = "Welcome, " & TextBox1.Text End Sub</script>
<head >
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" >
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" ></asp:TextBox><asp:Button ID="Button1" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" ></asp:Label>
</p>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<script >Void Button1_Click(object sender, System.EventArgs e) { Label1.Text = ("Welcome, " + TextBox1.Text);}</script>
<head >
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" >
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" ></asp:TextBox> <asp:Button ID="Button1" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" ></asp:Label>
</p>
</form>
</body>
</html>
Direttive @
Di norma, le pagine ASP.NET contengono direttive che consentono di specificare le proprietà della pagina e le relative informazioni di configurazione. Le direttive sono utilizzate da ASP.NET come istruzioni per l'elaborazione della pagina, ma non sono sottoposte a rendering come parte del markup inviato al browser.
La direttiva più utilizzata è @ Page, che consente di specificare numerose opzioni di configurazione per la pagina, tra cui:
Il linguaggio di programmazione server per il codice nella pagina.
Se la pagina contiene codice lato server direttamente al suo interno, ossia è una pagina a file singolo, oppure se il codice si trova in un file di classe distinto, ossia è una pagina con codice sottostante. Nell'esempio precedente viene illustrata una pagina a file singolo. Il codice si trova direttamente nella pagina e la direttiva @ Page non contiene informazioni su file di classe collegati. Per ulteriori informazioni, vedere la sezione "Codice lato server" più avanti in questo argomento, nonché l'argomento Modello di codice di pagine Web ASP.NET.
Opzioni di debug e analisi.
Se la pagina è associata a una pagina master e deve quindi essere considerata come una pagina di contenuto.
Se non viene inclusa una direttiva @ Page nella pagina, o se la direttiva non contiene un'impostazione specifica, le impostazioni vengono ereditate dal file di configurazione per l'applicazione Web (Web.config) o dal file di configurazione di sito (Machine.config).
Oltre alla direttiva @ Page, è possibile aggiungere direttive di altro tipo che supportano ulteriori opzioni specifiche della pagina. Altre direttive comuni includono:
@ Import Questa direttiva consente di specificare gli spazi dei nomi cui si desidera fare riferimento nel codice.
@ OutputCache Questa direttiva consente di indicare che la pagina deve essere memorizzata nella cache e di impostare i parametri relativi al momento e alla durata della memorizzazione nella cache.
@ Implements Questa direttiva consente di indicare che la pagina implementa un'interfaccia .NET.
@ Register Questa direttiva consente di registrare i controlli aggiuntivi da utilizzare nella pagina. La direttiva @ Register dichiara il prefisso del tag del controllo e la posizione del relativo assembly. Utilizzare questa direttiva per aggiungere controlli utente o controlli ASP.NET personalizzati alla pagina.
Alcuni tipi di file ASP.NET utilizzano una direttiva diversa da @ Page. Le pagine master ASP.NET utilizzano ad esempio una direttiva @ Master, mentre i controlli utente ASP.NET utilizzano una direttiva @ Control. Ogni direttiva consente di specificare opzioni diverse, adatte al file in questione.
Per informazioni dettagliate, vedere Informazioni generali sulle pagine master ASP.NET e Controlli utente ASP.NET.
Elementi form
Se nella pagina sono presenti controlli che consentono all'utente di interagire con la pagina e di inoltrarla, questa deve includere un elemento form. A tale scopo si utilizza l'elemento form HTML standard, cui si applicano tuttavia determinate regole. Le regole per l'utilizzo dell'elemento form sono le seguenti:
La pagina può contenere solo un elemento form.
L'elemento form deve contenere l'attributo runat con il valore impostato su server. Questo attributo consente di creare un riferimento al form e ai controlli sulla pagina a livello di codice lato server.
I controlli server in grado di eseguire un postback devono essere contenuti nell'elemento form.
Il tag di apertura non deve contenere un attributo action. ASP.NET imposta questi attributi in modo dinamico durante l'elaborazione della pagina, eseguendo l'override di qualsiasi impostazione dell'utente.
Controlli server Web
Nella maggior parte dei casi, è possibile aggiungere alle pagine ASP.NET controlli che consentono all'utente di interagire con la pagina, inclusi pulsanti, caselle di testo, elenchi e così via. Tali controlli server Web sono simili ai pulsanti HTML e agli elementi input. Tuttavia, questi controlli sono elaborati sul server e permettono dunque all'utente di impostare le proprietà personalizzate mediante codice lato server. Tali controlli generano inoltre eventi che possono essere gestiti nel codice lato server.
I controlli server utilizzano una sintassi speciale che ASP.NET riconosce durante l'esecuzione della pagina. Nell'esempio di codice seguente vengono illustrati alcuni controlli server Web tipici.
Nota sulla sicurezza: |
---|
Un controllo TextBox accetta l'input dell'utente e rappresenta quindi una potenziale minaccia alla sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script. |
<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"
Text="Click" OnClick="Button1_Click" />
<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"
Text="Click" OnClick="Button1_Click" />
Il nome del tag per i controlli server ASP.NET inizia con un prefisso, in questo caso asp:. Il prefisso può essere diverso se il controllo non fa parte di .NET Framework. I controlli server ASP.NET includono inoltre l'attributo e, facoltativamente, un ID che può essere utilizzato per creare un riferimento al controllo nel codice lato server.
Quando è in esecuzione, la pagina identifica i controlli server ed esegue il codice ad essi associato. Molti controlli eseguono il rendering di HTML o di altro markup nella pagina. Ad esempio, il controllo asp:textbox esegue il rendering di un elemento input con l'attributo type="text" in una pagina. Tuttavia, non esiste necessariamente un mapping uno-a-uno fra un controllo server Web e un elemento HTML. Ad esempio, il controllo asp:calendar esegue il rendering di una tabella HTML. Alcuni controlli non effettuano rendering al browser, ma sono elaborati esclusivamente sul server e forniscono informazioni ad altri controlli.
Elementi HTML come controlli server
In alternativa, o in aggiunta, ai controlli server ASP.NET, è possibile utilizzare normali elementi HTML come controlli server. È possibile aggiungere gli attributi e ID a qualsiasi elemento HTML nella pagina. Quando la pagina è in esecuzione, ASP.NET identifica l'elemento come controllo server e lo rende disponibile al codice lato server. Ad esempio, è possibile aggiungere gli elementi richiesti a un elemento body HTML, come illustrato nel seguente esempio di codice.
<body id="body">
È possibile creare un riferimento dell'elemento body nel codice lato server: ad esempio, è possibile impostare il colore di sfondo del corpo durante la fase di esecuzione a seconda dell'input dell'utente o delle informazioni di un database.
Per ulteriori informazioni, vedere la classe Cenni preliminari sui controlli server Web ASP.NET.
Codice lato server
La maggior parte delle pagine ASP.NET include un codice eseguibile esclusivamente sul server durante l'elaborazione della pagina. ASP.NET supporta diversi linguaggi, tra cui C#, Visual Basic, J# e Jscript.
ASP.NET supporta due modelli di scrittura di codice lato server per una pagina Web. Nel modello a file singolo, il codice della pagina è in un elemento script in cui il tag di apertura include l'attributo . Nell'esempio precedente nel presente argomento viene illustrato un modello a file singolo.
In alternativa, è possibile creare il codice per la pagina in un file di classe distinto. Tale tecnica è definita modello code-behind. In questo caso, la pagina Web ASP.NET Web in genere non contiene codice lato server. La direttiva @ Page include invece informazioni che collegano la pagina aspx al file code-behind associato. Nell'esempio di codice seguente viene illustrata una tipica direttiva @ Page per una pagina con un file di codice sottostante.
<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Default" %>
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>
L'attributo CodeFile specifica il nome del file di classe distinto, mentre l'attributo Inherits specifica il nome della classe all'interno del file di codice sottostante che corrisponde alla pagina.
Per ulteriori informazioni, vedere Modello di codice di pagine Web ASP.NET.
Nota: |
---|
Le pagine Web ASP.NET possono anche includere script client che viene eseguito nel browser in risposta a eventi sul lato client. Una pagina ASP.NET può includere sia script client sia codice lato server. Per informazioni, vedere Script client nelle pagine Web ASP.NET. |
Vedere anche
Concetti
Cenni preliminari sulle pagine Web ASP.NET
Introduzione alle pagine Web ASP.NET
Cenni preliminari sulle espressioni ASP.NET