Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come sviluppare .aspx pagine che usano file di classe code-behind nelle applicazioni Microsoft ASP.NET. Gli esempi di codice in questo articolo includono i requisiti per i file di classe code-behind precompilati e code-behind compilati su richiesta.
Versione originale del prodotto: ASP.NET
Numero KB originale: 308143
Requisiti
L'elenco seguente illustra l'hardware, il software e l'infrastruttura di rete consigliati necessari:
- Finestre
- .NET Framework
- Internet Information Services (IIS)
Creare un'applicazione Web ASP.NET usando Visual C# .NET
Questa sezione illustra come creare una nuova applicazione Web ASP.NET denominata CodeBehindSamples.
- Avviare Visual Studio .NET.
- Scegliere Nuovo dal menu Filee quindi fare clic su Progetto.
- In Tipo di progetto fare clic su Progetti Visual C#. In Modelli fare clic su ASP.NET'applicazione Web.
- Nella casella Nome digitare CodeBehindSamples. Nella casella Percorso digitare ServerName. Se si usa il server locale, lasciare il percorso come
http://localhost
.
Usare file di classe code-behind
Se si usano file di classe code-behind con .aspx pagine, è possibile separare il codice di presentazione dalla logica dell'applicazione principale (o code-behind). Il file di classe code-behind viene compilato in modo che possa essere creato e usato come oggetto . In questo modo è possibile accedere alle relative proprietà, ai relativi metodi e ai relativi gestori eventi. Per il funzionamento, la pagina .aspx deve specificare per ereditare dalla classe di base code-behind. A tale scopo, usare l'attributo Inherits
per la @ Page
direttiva . La pagina .aspx eredita dalla classe code-behind e la classe code-behind eredita dalla Page
classe .
Per impostazione predefinita, se si usa Visual Studio .NET, alla direttiva viene aggiunto @ Page
un Codebehind
attributo . .NET Framework non usa effettivamente questo attributo. Visual Studio .NET usa invece questo attributo per mantenere un riferimento al file code-behind associato per la pagina .aspx.
Per illustrare in che modo Visual Studio .NET usa l'attributo Codebehind
, rimuovere l'attributo Codebehind
. Non è più possibile fare clic con il pulsante destro del mouse sulla pagina .aspx e quindi scegliere Visualizza codice. Questo comportamento si verifica perché Visual Studio .NET non contiene più un riferimento per il file di classe che può usare per la pagina. Tenere presente che questo non è il modo in cui .NET Framework usa i file di classe code-behind, ma come Visual Studio .NET gestisce questi file di progetto.
Usare l'attributo Inherits con classi precompilate
Se si precompilano le classi code-behind in un assembly, è possibile usare l'attributo Inherits
per specificare la classe da cui ereditare. In questo scenario non è necessario includere il file di classe code-behind effettivo quando si distribuisce l'applicazione. È invece necessario distribuire l'assembly e la pagina .aspx. È necessario inserire l'assembly nella Bin
cartella per l'applicazione quando si distribuisce l'applicazione.
Questa sezione illustra come creare un nuovo Web Form che usa l'approccio precompilato ed eredita dalla classe code-behind.
Per aggiungere un nuovo Web Form denominato InheritSample.aspx al progetto .NET di Visual Studio, seguire questa procedura:
- In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto, scegliere Aggiungi e quindi fare clic su Aggiungi Modulo Web.
- Nella casella Nome digitare InheritSample.aspx e quindi fare clic su Apri.
Passare alla visualizzazione Struttura e quindi aggiungere un controllo Etichetta modulo Web alla pagina .aspx.
Fare clic con il pulsante destro del mouse sulla pagina .aspx e quindi scegliere Visualizza codice. Il file code-behind viene aperto nell'editor.
Nel file code-behind aggiungere il codice seguente al
Page_Load
gestore eventi:private void Page_Load(object sender, System.EventArgs e) { Label1.Text = "(Precompiled): Page_Load fired!"; }
Note
Questo codice dimostra solo che la classe code-behind è coinvolta nell'esempio in fase di esecuzione nei passaggi successivi.
Passare dal file di classe code-behind alla pagina .aspx nell'editor e quindi passare alla visualizzazione HTML.
Nella parte superiore della pagina esaminare il codice per la
@ Page
direttiva . Il codice dovrebbe essere simile al codice predefinito seguente:<%@ Page language="c#" Codebehind="InheritSample.aspx.cs" AutoEventWireup="false" Inherits="CodeBehindSamples.InheritSample" %>
In questo esempio, la pagina .aspx eredita dalla classe code-behind denominata
InheritSamples
nello spazio deiCodeBehindSamples
nomi . Per impostazione predefinita, un'applicazione Web creata in Visual Studio .NET usa unaProjectName.ClassName
struttura per il valore dell'attributoInherits
.Scegliere Salva tutto dal menu File per salvare il Web Form e altri file di progetto associati.
Nell'IDE .NET di Visual Studio scegliere Compila dal menu Compila per compilare il progetto.
Scegliere Mostra tutti i file dal menu Progetto.
In Esplora soluzioni fare clic per espandere la
Bin
cartella. L'assembly generato durante la compilazione del progetto dalla sezione precedente (che è CodeBehindSamples.dll in questo esempio) viene visualizzato nellaBin
cartella .In Visual Studio .NET fare clic con il pulsante destro del mouse sulla pagina in Esplora soluzioni e quindi scegliere Visualizza nel browser per eseguire il codice. L'etichetta viene popolata con il valore seguente:
(Precompiled): Page_Load fired!
Usare l'attributo Src e compilare su richiesta
Se i file di classe code-behind verranno compilati su richiesta anziché precompilati, è necessario usare l'attributo Src
per specificare il percorso relativo del file di classe code-behind. Assicurarsi di includere il file di classe effettivo quando si usa questo metodo per distribuire l'applicazione.
Note
Per altre informazioni sui potenziali problemi durante lo sviluppo di applicazioni in Visual Studio .NET con l'attributo Src
, vedere la sezione Riferimenti in questo articolo. Visual Studio .NET è progettato per sfruttare i vantaggi della precompilazione del codice dell'applicazione in un assembly invece di usare l'approccio di compilazione su richiesta descritto in questa sezione.
Per aggiungere un nuovo Web Form denominato SrcSample.aspx al progetto in Visual Studio .NET, seguire questa procedura:
- In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto, scegliere Aggiungi e quindi fare clic su Aggiungi Modulo Web.
- Nella casella Nome digitare SrcSample.aspx e quindi fare clic su Apri.
Passare alla visualizzazione Struttura e quindi aggiungere un controllo Etichetta modulo Web alla pagina .aspx.
Fare clic con il pulsante destro del mouse sulla pagina .aspx e quindi scegliere Visualizza codice. Il file code-behind viene aperto nell'editor.
Nel file code-behind aggiungere il codice seguente all'evento
Page_Load
:private void Page_Load(object sender, System.EventArgs e) { Label1.Text = "(Src): Page_Load fired!"; }
Passare dal file di classe code-behind alla pagina .aspx nell'editor e quindi passare alla visualizzazione HTML.
Nella parte superiore della pagina esaminare il codice per la
@ Page
direttiva . Il codice dovrebbe essere simile al codice predefinito seguente:<%@ Page language="c#" Codebehind="SrcSample.aspx.cs" AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample"%>
Per semplificare questo esempio, eliminare il file Global.asax dal progetto. Questa operazione viene eseguita solo in questo esempio per evitare errori aggiuntivi correlati alla pagina code-behind del file Global.asax .
Scegliere Salva tutto dal menu File per salvare il Web Form e altri file di progetto associati.
Note
Poiché si vuole che il file di classe code-behind per questo esempio venga compilato su richiesta, non compilare ora la soluzione.
Se sono stati seguiti i passaggi elencati nella sezione Usare l'attributo Inherits con classi precompilate, è necessario eliminare l'assembly nella
Bin
directory dell'applicazione prima di seguire i passaggi rimanenti di questa sezione.Per altre informazioni, vedere la sezione Risoluzione dei problemi di questo articolo.
Per eseguire la pagina, avviare Internet Explorer e quindi immettere manualmente l'URL della pagina. Non selezionare le opzioni Visualizza nel browser o Sfoglia con dall'IDE .NET di Visual Studio. In caso contrario, se si usa Visual Studio .NET 2003, la pagina code-behind verrà precompilata in un assembly che si trova nella
Bin
directory per impostazione predefinita. Dopo aver visualizzato la pagina, verrà visualizzato un messaggio di errore simile al seguente:Impossibile caricare il tipo 'CodeBehindSamples.SrcSample'.
Questo errore si verifica perché il file di classe code-behind non è ancora compilato e non è ancora stato incluso l'attributo
Src
per fare riferimento al file di classe code-behind.Aggiungere l'attributo
Src
alla@ Page
direttiva come segue:<%@ Page language="c#" Codebehind="SrcSample.aspx.cs" AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample" Src="SrcSample.aspx.cs"%>
L'attributo
Src
viene elencato con il percorso relativo del file di classe code-behind (SrcSample.aspx.cs) e il valore dell'attributoInherits
è impostato per fare riferimentoCodeBehindSamples.SrcSample
a .Scegliere Salva tutto dal menu File per salvare il Web Form e altri file di progetto associati. Tenere presente che non compilare la soluzione perché si vuole che il file di classe code-behind per questo esempio venga compilato su richiesta.
Per eseguire la pagina, avviare Internet Explorer e quindi immettere manualmente l'URL della pagina. Non selezionare le opzioni Visualizza nel browser o Sfoglia con dall'IDE .NET di Visual Studio. In caso contrario, se si usa Visual Studio .NET 2003, la pagina code-behind verrà precompilata in un assembly che si trova nella
Bin
directory per impostazione predefinita. A questo punto, la pagina deve essere caricata nel browser e l'etichetta viene popolata con il valore seguente:(Src): Page_Load fired!
Il file di classe code-behind è ora stato compilato su richiesta e funziona correttamente.
Risoluzione dei problemi
È possibile che venga visualizzato un messaggio di errore simile al seguente se si precompila l'applicazione in Visual Studio .NET e quindi si tenta di applicare l'approccio di compilazione su richiesta usando l'attributo
Src
:Messaggio di errore del compilatore: CS1595: 'ProjectName.CodeBehindClassName' è definito in più posizioni; utilizzando la definizione da '%windir%:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName. DLL'
Tenere presente che i nomi di directory che seguono YourProjectName nel percorso elencato nel messaggio di errore saranno probabilmente diversi perché ASP.NET gestisce automaticamente la compilazione delle directory e i relativi nomi.
Se si usa l'attributo
Src
, è necessario seguire questa procedura per risolvere il problema associato al messaggio di errore:Eliminare la directory YourProjectName a cui si fa riferimento nel messaggio di errore. Potrebbe anche essere necessario eseguire il
iisreset
comando dal prompt dei comandi prima di completare questo passaggio. In caso contrario, è possibile che venga visualizzato un messaggio di errore simile al seguente:Impossibile eliminare GeneratedName.dll: accesso negato.
Assicurarsi che il disco non sia pieno o protetto da scrittura e che il file non sia attualmente in uso.Eliminare l'assembly nella
Bin
directory dell'applicazione.Per eseguire la pagina, avviare Internet Explorer e quindi immettere manualmente l'URL della pagina. Non selezionare le opzioni Visualizza nel browser o Sfoglia con dall'IDE .NET di Visual Studio. In caso contrario, se si usa Visual Studio .NET 2003, la pagina code-behind verrà precompilata in un assembly che si trova nella
Bin
directory per impostazione predefinita.
Note
Microsoft consiglia di usare l'approccio precompilato anziché il metodo compile on demand (usando l'attributo
Src
) se si sviluppano applicazioni con Visual Studio .NET per evitare questi tipi di problemi.Se si desidera o se è necessario contenere le pagine del Modulo Web in un singolo file, sviluppare le pagine di .aspx in modo da contenere il codice anziché il file di classe code-behind.
Per altre informazioni su come sviluppare Web Form a file singolo in Visual Studio .NET, vedere la documentazione tecnica ritirata di Visual Studio 2003.
Se non si precompila il file di classe code-behind e se non si aggiunge l'attributo
Src
alla@ Page
direttiva o se il percorso virtuale per l'attributo non è corretto, verrà visualizzato il messaggio di errore seguente:Impossibile caricare il tipo 'CodeBehindSamples.SrcSample'.
Quando si distribuiscono .aspx pagine, se i file di classe code-behind associati sono precompilati, è necessario distribuire l'assembly solo nella
Bin
cartella dell'applicazione. Non è necessario distribuire i file di classe code-behind effettivi con l'applicazione.Quando si distribuiscono .aspx pagine, se i file di classe code-behind associati non sono precompilati, è necessario distribuire i file di classe code-behind con l'applicazione. Inoltre, è necessario aggiungere l'attributo
Src
alla@ Page
direttiva perché il file di classe deve essere disponibile quando viene compilato su richiesta.
Riferimenti
Per altre informazioni sugli assembly, vedere Assembly.
Per altri articoli, esempi e altre risorse correlate alla programmazione ASP.NET, vedere ASP.NET.
Per altre informazioni sulla direttiva @ Page e sui relativi vari attributi, vedere @ Page.
Per altre informazioni sulla sintassi Web Form generale, vedere sintassi web form.
Per altre informazioni, vedere ASP.NET panoramica del modello Code-behind.