Interazione con la pagina master dalla pagina di contenuto (C#)
Esamina come chiamare metodi, impostare proprietà e così via della pagina master dal codice nella pagina contenuto.
Introduzione
Nel corso delle ultime cinque esercitazioni abbiamo esaminato come creare una pagina master, definire le aree del contenuto, associare ASP.NET pagine a una pagina master e definire contenuti specifici della pagina. Quando un visitatore richiede una determinata pagina di contenuto, il markup del contenuto e delle pagine master viene fuso in fase di esecuzione, causando il rendering di una gerarchia di controllo unificata. Pertanto, abbiamo già visto un modo in cui la pagina master e una delle relative pagine di contenuto possono interagire: la pagina del contenuto specifica il markup per trasfusa nei controlli ContentPlaceHolder della pagina master.
Ciò che è ancora necessario esaminare è il modo in cui la pagina master e la pagina del contenuto possono interagire a livello di codice. Oltre a definire il markup per i controlli ContentPlaceHolder della pagina master, una pagina del contenuto può anche assegnare valori alle proprietà pubbliche della pagina master e richiamare i relativi metodi pubblici. Analogamente, una pagina master può interagire con le relative pagine di contenuto. Sebbene l'interazione a livello di codice tra un master e una pagina del contenuto sia meno comune dell'interazione tra i markup dichiarativi, esistono molti scenari in cui è necessaria tale interazione a livello di codice.
In questa esercitazione viene esaminato il modo in cui una pagina di contenuto può interagire a livello di codice con la relativa pagina master; nell'esercitazione successiva verrà illustrato come la pagina master può interagire in modo analogo con le pagine del contenuto.
Esempi di interazione a livello di codice tra una pagina contenuto e la relativa pagina master
Quando una determinata area di una pagina deve essere configurata in base a una pagina, viene usato un controllo ContentPlaceHolder. Ma quali sono le situazioni in cui la maggior parte delle pagine deve generare un determinato output, ma un numero ridotto di pagine deve personalizzarlo per visualizzare qualcos'altro? Uno di questi esempi, esaminato nell'esercitazione Su più ContentPlaceHolder e Contenuto predefinito , comporta la visualizzazione di un'interfaccia di accesso in ogni pagina. Anche se la maggior parte delle pagine deve includere un'interfaccia di accesso, deve essere eliminata per una manciata di pagine, ad esempio: la pagina di accesso principale (Login.aspx
); la pagina Crea account e altre pagine accessibili solo agli utenti autenticati. L'esercitazione Su più ContentPlaceHolder e Contenuto predefinito ha illustrato come definire il contenuto predefinito per un ContentPlaceHolder nella pagina master e quindi come eseguirne l'override nelle pagine in cui il contenuto predefinito non era desiderato.
Un'altra opzione consiste nel creare una proprietà o un metodo pubblico all'interno della pagina master che indica se visualizzare o nascondere l'interfaccia di accesso. Ad esempio, la pagina master può includere una proprietà pubblica denominata ShowLoginUI
il cui valore è stato usato per impostare la Visible
proprietà del controllo Login nella pagina master. Tali pagine di contenuto in cui l'interfaccia utente di accesso deve essere eliminata potrebbero quindi impostare a livello di codice la ShowLoginUI
proprietà su false
.
Forse l'esempio più comune di interazione tra contenuto e pagina master si verifica quando i dati visualizzati nella pagina master devono essere aggiornati dopo che alcune azioni hanno traspirato nella pagina del contenuto. Si consideri una pagina master che include GridView che visualizza i cinque record aggiunti più di recente da una tabella di database specifica e che una delle relative pagine di contenuto include un'interfaccia per l'aggiunta di nuovi record alla stessa tabella.
Quando un utente visita la pagina per aggiungere un nuovo record, vede i cinque record aggiunti più di recente visualizzati nella pagina master. Dopo aver compilato i valori per le colonne del nuovo record, invia il modulo. Supponendo che GridView nella pagina master disponga della relativa EnableViewState
proprietà impostata su true (impostazione predefinita), il relativo contenuto viene ricaricato dallo stato di visualizzazione e, di conseguenza, vengono visualizzati cinque stessi record anche se un record più recente è stato appena aggiunto al database. Questo può confondere l'utente.
Nota
Anche se si disabilita lo stato di visualizzazione di GridView in modo che venga ribinato all'origine dati sottostante in ogni postback, non verrà comunque visualizzato il record appena aggiunto perché i dati vengono associati a GridView in precedenza nel ciclo di vita della pagina rispetto al momento dell'aggiunta del nuovo record al database.
Per risolvere questo problema, in modo che il record appena aggiunto venga visualizzato nella pagina master di GridView nel postback, è necessario indicare a GridView di ribindare l'origine dati dopo l'aggiunta del nuovo record al database. Ciò richiede l'interazione tra il contenuto e le pagine master perché l'interfaccia per l'aggiunta del nuovo record (e i relativi gestori eventi) si trovano nella pagina del contenuto, ma GridView che deve essere aggiornata si trova nella pagina master.
Poiché l'aggiornamento della visualizzazione della pagina master da un gestore eventi nella pagina del contenuto è una delle esigenze più comuni per l'interazione tra contenuto e pagina master, verrà illustrato in modo più dettagliato questo argomento. Il download per questa esercitazione include un database di microsoft SQL Server 2005 Express Edition denominato NORTHWIND.MDF
nella cartella del App_Data
sito Web. Il database Northwind archivia le informazioni sul prodotto, sui dipendenti e sulle vendite per una società fittizia, Northwind Traders.
Passaggio 1 illustra come visualizzare i cinque prodotti aggiunti più di recente in una griglia nella pagina master. Il passaggio 2 crea una pagina di contenuto per l'aggiunta di nuovi prodotti. Il passaggio 3 illustra come creare proprietà e metodi pubblici nella pagina master e il passaggio 4 illustra come interfacciarsi a livello di codice con queste proprietà e metodi dalla pagina del contenuto.
Nota
Questa esercitazione non descrive le specifiche dell'uso dei dati in ASP.NET. I passaggi per configurare la pagina master per visualizzare i dati e la pagina del contenuto per l'inserimento dei dati sono ancora completi. Per un'analisi più approfondita della visualizzazione e dell'inserimento dei dati e dell'uso dei controlli SqlDataSource e GridView, consultare le risorse nella sezione Letture aggiuntive alla fine di questa esercitazione.
Passaggio 1: Visualizzazione dei cinque prodotti aggiunti più di recente nella pagina master
Aprire la Site.master
pagina master e aggiungere un'etichetta e un controllo GridView all'oggetto leftContent
<div>
. Deselezionare la proprietà labelText
, impostarne la EnableViewState
proprietà su false e la ID
relativa proprietà su ; impostare la proprietà gridView ID
su GridMessage
RecentProducts
. Successivamente, dalla Designer, espandere lo smart tag di GridView e scegliere di associarlo a una nuova origine dati. In questo modo viene avviata la configurazione guidata origine dati. Poiché il database Northwind nella App_Data
cartella è un database di Microsoft SQL Server, scegliere di creare sqlDataSource selezionando (vedere la figura 1); assegnare un nome a SqlDataSourceRecentProductsDataSource
.
Figura 01: Associare GridView a un controllo SqlDataSource denominato RecentProductsDataSource
(Fare clic per visualizzare un'immagine a dimensioni complete)
Il passaggio successivo chiede di specificare il database a cui connettersi. Scegliere il NORTHWIND.MDF
file di database dall'elenco a discesa e fare clic su Avanti. Poiché si tratta della prima volta che è stato usato questo database, la procedura guidata offrirà di archiviare il stringa di connessione in Web.config
. Archiviare il stringa di connessione usando il nome NorthwindConnectionString
.
Figura 02: Connettersi al database Northwind (Fare clic per visualizzare l'immagine full-size)
La procedura guidata Configura origine dati fornisce due mezzi per specificare la query usata per recuperare i dati:
- Specificando un'istruzione SQL personalizzata o una stored procedure oppure
- Selezionando una tabella o una vista e specificando le colonne da restituire
Poiché si vuole restituire solo i cinque prodotti aggiunti di recente, è necessario specificare un'istruzione SQL personalizzata. Usare la query SELECT seguente:
SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC
La TOP 5
parola chiave restituisce solo i primi cinque record della query. La Products
chiave primaria della tabella, ProductID
, è una IDENTITY
colonna, che assicura che ogni nuovo prodotto aggiunto alla tabella avrà un valore maggiore rispetto alla voce precedente. Pertanto, l'ordinamento dei risultati in ProductID
ordine decrescente restituisce i prodotti a partire da quelli creati più di recente.
Figura 03: Restituire i cinque prodotti aggiunti più di recente (fare clic per visualizzare l'immagine full-size)
Dopo aver completato la procedura guidata, Visual Studio genera due BoundFields per gridView per visualizzare i ProductName
campi e UnitPrice
restituiti dal database. A questo punto il markup dichiarativo della pagina master deve includere markup simile al seguente:
<asp:Label ID="GridMessage" runat="server" EnableViewState="false"></asp:Label>
<asp:GridView ID="RecentProducts" runat="server" AutoGenerateColumns="False"
DataSourceID="RecentProductsDataSource">
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName"/>
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
SortExpression="UnitPrice"/>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="RecentProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC">
</asp:SqlDataSource>
Come si può notare, il markup contiene: il controllo Web Label (GridMessage
); GridView RecentProducts
, con due BoundFields e un controllo SqlDataSource che restituisce i cinque prodotti aggiunti più di recente.
Con questo controllo GridView creato e il relativo controllo SqlDataSource configurato, visitare il sito Web tramite un browser. Come illustrato nella figura 4, verrà visualizzata una griglia nell'angolo inferiore sinistro che elenca i cinque prodotti aggiunti più di recente.
Figura 04: GridView visualizza i cinque prodotti aggiunti più di recente (fare clic per visualizzare l'immagine full-size)
Nota
È possibile pulire l'aspetto di GridView. Alcuni suggerimenti includono la formattazione del valore visualizzato UnitPrice
come valuta e l'uso di colori e tipi di carattere di sfondo per migliorare l'aspetto della griglia.
Passaggio 2: Creazione di una pagina contenuto per aggiungere nuovi prodotti
L'attività successiva consiste nel creare una pagina di contenuto da cui un utente può aggiungere un nuovo prodotto alla Products
tabella. Aggiungere una nuova pagina di contenuto alla Admin
cartella denominata AddProduct.aspx
, assicurandosi di associarla alla Site.master
pagina master. La figura 5 mostra la Esplora soluzioni dopo l'aggiunta di questa pagina al sito Web.
Figura 05: Aggiungere una nuova pagina ASP.NET alla Admin
cartella(Fare clic per visualizzare l'immagine a dimensioni complete)
Si ricordi che nell'esercitazione Specificare titolo, meta tag e altre intestazioni HTML nell'esercitazione Pagina master è stata creata una classe di pagina di base personalizzata denominata BasePage
che ha generato il titolo della pagina se non è stata impostata in modo esplicito. Passare alla AddProduct.aspx
classe code-behind della pagina e derivarla da BasePage
(anziché da System.Web.UI.Page
).
Aggiornare infine il Web.sitemap
file in modo da includere una voce per questa lezione. Aggiungere il markup seguente sotto per la lezione Problemi di denominazione dell'ID <siteMapNode>
di controllo:
<siteMapNode url="~/Admin/AddProduct.aspx" title="Content to Master Page Interaction" />
Come illustrato nella figura 6, l'aggiunta di questo <siteMapNode>
elemento viene riflessa nell'elenco Lezioni.
Tornare a AddProduct.aspx
. Nel controllo Contenuto per MainContent
ContentPlaceHolder aggiungere un controllo DetailsView e assegnarne NewProduct
il nome . Associare DetailsView a un nuovo controllo SqlDataSource denominato NewProductDataSource
. Come per SqlDataSource nel passaggio 1, configurare la procedura guidata in modo che usi il database Northwind e scegliere di specificare un'istruzione SQL personalizzata. Poiché DetailsView verrà usato per aggiungere elementi al database, è necessario specificare sia un'istruzione SELECT
che un'istruzione INSERT
. Usare la query seguente SELECT
:
SELECT ProductName, UnitPrice FROM Products
Quindi, dalla scheda INSERT aggiungere l'istruzione seguente INSERT
:
INSERT INTO Products(ProductName, UnitPrice) VALUES(@ProductName, @UnitPrice)
Dopo aver completato la procedura guidata, passare allo smart tag di DetailsView e selezionare la casella di controllo "Abilita inserimento". In questo modo viene aggiunto un commandField a DetailsView con la relativa ShowInsertButton
proprietà impostata su true. Poiché questo detailsView verrà usato esclusivamente per l'inserimento DefaultMode
dei dati, impostare la proprietà DetailsView su Insert
.
Questo è tutto ciò che occorre fare. Testiamo questa pagina. Visitare AddProduct.aspx
un browser, immettere un nome e un prezzo (vedere la figura 6).
Figura 06: Aggiungere un nuovo prodotto al database (fare clic per visualizzare l'immagine full-size)
Dopo aver digitato il nome e il prezzo per il nuovo prodotto, fare clic sul pulsante Inserisci. In questo modo il modulo viene postbackato. Al postback, l'istruzione del INSERT
controllo SqlDataSource viene eseguita. I due parametri vengono popolati con i valori immessi dall'utente nei due controlli TextBox di DetailsView. Sfortunatamente, non esiste alcun feedback visivo che si è verificato un inserimento. Sarebbe bello visualizzare un messaggio, confermando che è stato aggiunto un nuovo record. Lascio questo come esercizio per il lettore. Dopo l'aggiunta di un nuovo record da DetailsView nella pagina master vengono comunque visualizzati gli stessi cinque record di prima; non include il record appena aggiunto. Si esaminerà come risolvere questo problema nei prossimi passaggi.
Nota
Oltre all'aggiunta di un feedback visivo che l'inserimento ha avuto esito positivo, è consigliabile aggiornare anche l'interfaccia di inserimento di DetailsView per includere la convalida. Attualmente non è disponibile alcuna convalida. Se un utente immette un valore non valido per il UnitPrice
campo, ad esempio "Troppo costoso", verrà generata un'eccezione al postback quando il sistema tenta di convertire tale stringa in un decimale. Per altre informazioni sulla personalizzazione dell'interfaccia di inserimento, vedere l'esercitazione Personalizzazione dell'interfaccia di modifica dei dati dalla serie di esercitazioni Sull'uso dei dati.
Passaggio 3: Creazione di proprietà e metodi pubblici nella pagina master
Nel passaggio 1 è stato aggiunto un controllo Web etichetta denominato GridMessage
sopra GridView nella pagina master. Questa etichetta è destinata facoltativamente a visualizzare un messaggio. Ad esempio, dopo aver aggiunto un nuovo record alla Products
tabella, potrebbe essere necessario visualizzare un messaggio che legge: "ProductName è stato aggiunto al database". Anziché hard-code il testo per questa etichetta nella pagina master, potrebbe essere necessario che il messaggio sia personalizzabile dalla pagina del contenuto.
Poiché il controllo Etichetta viene implementato come variabile membro protetto all'interno della pagina master non può essere accessibile direttamente dalle pagine del contenuto. Per usare l'etichetta all'interno di una pagina master dalla pagina del contenuto (o, per tale motivo, qualsiasi controllo Web nella pagina master) è necessario creare una proprietà pubblica nella pagina master che espone il controllo Web o funge da proxy da cui è possibile accedere uno dei relativi proprietà. Aggiungere la sintassi seguente alla classe code-behind della pagina master per esporre la proprietà dell'etichetta Text
:
public string GridMessageText
{
get
{
return GridMessage.Text;
}
set
{
GridMessage.Text = value;
}
}
Quando viene aggiunto un nuovo record alla Products
tabella da una pagina del contenuto, RecentProducts
GridView nella pagina master deve essere ribinato all'origine dati sottostante. Per ribinare il metodo DataBind
GridView. Poiché GridView nella pagina master non è accessibile a livello di codice alle pagine del contenuto, è necessario creare un metodo pubblico nella pagina master che, quando chiamato, ribinta i dati in GridView. Aggiungere il metodo seguente alla classe code-behind della pagina master:
public void RefreshRecentProductsGrid()
{
RecentProducts.DataBind();
}
Con la proprietà e RefreshRecentProductsGrid
il GridMessageText
metodo sul posto, qualsiasi pagina del contenuto può impostare a livello di codice o leggere il valore della GridMessage
proprietà dell'etichetta Text
o ribinare i dati in RecentProducts
GridView. Il passaggio 4 esamina come accedere alle proprietà e ai metodi pubblici della pagina master da una pagina del contenuto.
Nota
Non dimenticare di contrassegnare le proprietà e i metodi della pagina master come public
. Se non si indicano in modo esplicito queste proprietà e metodi come public
, non saranno accessibili dalla pagina del contenuto.
Passaggio 4: Chiamata dei membri pubblici della pagina master da una pagina contenuto
Ora che la pagina master ha le proprietà e i metodi pubblici necessari, è possibile richiamare queste proprietà e metodi dalla pagina del AddProduct.aspx
contenuto. In particolare, è necessario impostare la proprietà della GridMessageText
pagina master e chiamare RefreshRecentProductsGrid
il relativo metodo dopo l'aggiunta del nuovo prodotto al database. Tutti i controlli Web dati ASP.NET generano eventi immediatamente prima e dopo il completamento di varie attività, che semplificano l'esecuzione di un'azione a livello di codice prima o dopo l'attività. Ad esempio, quando l'utente finale fa clic sul pulsante Inserisci di DetailsView, nel postback detailsView genera ItemInserting
l'evento prima di iniziare il flusso di lavoro di inserimento. Inserisce quindi il record nel database. In seguito, DetailsView genera l'evento ItemInserted
. Pertanto, per usare la pagina master dopo l'aggiunta del nuovo prodotto, creare un gestore eventi per l'evento ItemInserted
DetailsView.
Esistono due modi in cui una pagina del contenuto può interfacciarsi a livello di codice con la relativa pagina master:
- Uso della
Page.Master
proprietà, che restituisce un riferimento di tipo libero alla pagina master o - Specificare il tipo di pagina master della pagina o il percorso del file tramite una
@MasterType
direttiva. Questo aggiunge automaticamente una proprietà fortemente tipizzata alla pagina denominataMaster
.
Esaminiamo entrambi gli approcci.
Uso della proprietà di tipo genericoPage.Master
Tutte le pagine Web ASP.NET devono derivare dalla Page
classe, che si trova nello System.Web.UI
spazio dei nomi. La Page
classe include una proprietà che restituisce un Master
riferimento alla pagina master della pagina. Se la pagina non dispone di una pagina Master
master, restituisce null
.
La Master
proprietà restituisce un oggetto di tipo MasterPage
(situato anche nello System.Web.UI
spazio dei nomi) che è il tipo di base da cui derivano tutte le pagine master. Pertanto, per usare proprietà o metodi pubblici definiti nella pagina master del sito Web, è necessario eseguire il MasterPage
cast dell'oggetto restituito dalla Master
proprietà al tipo appropriato. Poiché il file Site.master
della pagina master è stato denominato , la classe code-behind è stata denominata Site
. Di conseguenza, il codice seguente esegue il cast della Page.Master
proprietà in un'istanza della classe Site.
// Cast the loosely-typed Page.Master property and then set the GridMessageText property
Site myMasterPage = Page.Master as Site;
Dopo aver eseguito il cast della proprietà tipizzata Page.Master
in modo libero al tipo, è possibile fare riferimento alle proprietà e ai Site
metodi specifici del sito. Come illustrato nella figura 7, la proprietà GridMessageText
pubblica viene visualizzata nell'elenco a discesa IntelliSense.
Figura 07: IntelliSense mostra le proprietà e i metodi pubblici della pagina master (fare clic per visualizzare l'immagine full-size)
Nota
Se è stato denominato il file MasterPage.master
della pagina master, il nome della classe code-behind della pagina master è MasterPage
. Ciò può causare un codice ambiguo quando si esegue il cast dal tipo System.Web.UI.MasterPage
alla MasterPage
classe. In breve, è necessario qualificare completamente il tipo a cui si esegue il cast, che può essere un po ' difficile quando si usa il modello di progetto sito Web. Il mio suggerimento sarebbe quello di assicurarsi che quando si crea la pagina master si chiama qualcosa di diverso da MasterPage.master
o, anche meglio, creare un riferimento fortemente tipizzato alla pagina master.
Creazione di un riferimento Strongly-Typed con la@MasterType
direttiva
Se si guarda attentamente, è possibile notare che la classe code-behind di una pagina ASP.NET è una classe parziale (si noti la partial
parola chiave nella definizione della classe). Le classi parziali sono state introdotte in C# e Visual Basic with.NET Framework 2.0 e, in un breve termine, consentono di definire i membri di una classe in più file. Il file di classe code-behind, AddProduct.aspx.cs
ad esempio , contiene il codice creato dallo sviluppatore di pagine. Oltre al codice, il motore di ASP.NET crea automaticamente un file di classe separato con proprietà e gestori eventi in che convertono il markup dichiarativo nella gerarchia di classi della pagina.
La generazione automatica del codice che si verifica ogni volta che viene visitata una pagina di ASP.NET apre la strada per alcune possibilità piuttosto interessanti e utili. Nel caso di pagine master, se si indica al motore di ASP.NET quale pagina master viene usata dalla pagina del contenuto genera una proprietà fortemente tipizzata Master
per noi.
Usare la direttiva per informare il @MasterType
motore di ASP.NET del tipo di pagina master della pagina del contenuto. La @MasterType
direttiva può accettare il nome del tipo della pagina master o il relativo percorso di file. Per specificare che la AddProduct.aspx
pagina usa Site.master
come pagina master, aggiungere la direttiva seguente all'inizio di AddProduct.aspx
:
<%@ MasterType VirtualPath="~/Site.master" %>
Questa direttiva indica al motore di ASP.NET di aggiungere un riferimento fortemente tipizzato alla pagina master tramite una proprietà denominata Master
. Con la @MasterType
direttiva sul posto, è possibile chiamare le Site.master
proprietà e i metodi pubblici della pagina master direttamente tramite la Master
proprietà senza cast.
Nota
Se si omette la @MasterType
direttiva, la sintassi Page.Master
e Master
restituisce la stessa cosa: un oggetto di tipo libero nella pagina master della pagina principale della pagina. Se si include la @MasterType
direttiva, restituisce Master
un riferimento fortemente tipizzato alla pagina master specificata. Page.Master
, tuttavia, restituisce comunque un riferimento di tipo libero. Per un'analisi più approfondita del motivo per cui si tratta del caso e del modo in cui la Master
proprietà viene costruita quando la @MasterType
direttiva è inclusa, vedere la voce @MasterType
di blog di K. Scott Allen in ASP.NET 2.0.
Aggiornamento della pagina master dopo l'aggiunta di un nuovo prodotto
Dopo aver appreso come richiamare le proprietà e i metodi pubblici di una pagina master da una pagina del contenuto, è possibile aggiornare la AddProduct.aspx
pagina in modo che la pagina master venga aggiornata dopo l'aggiunta di un nuovo prodotto. All'inizio del passaggio 4 è stato creato un gestore eventi per l'evento del ItemInserting
controllo DetailsView, che viene eseguito immediatamente dopo l'aggiunta del nuovo prodotto al database. Aggiungere il codice seguente al gestore eventi:
protected void NewProduct_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
// Cast the loosely-typed Page.Master property and then set the GridMessageText property
Site myMasterPage = Page.Master as Site;
myMasterPage.GridMessageText = string.Format("{0} added to grid...", e.Values["ProductName"]);
// Use the strongly-typed Master property
Master.RefreshRecentProductsGrid();
}
Il codice precedente usa sia la proprietà tipizzata che la proprietà fortemente tipizzata Page.Master
Master
. Si noti che la GridMessageText
proprietà è impostata su "ProductName aggiunto alla griglia..." I valori del prodotto appena aggiunti sono accessibili tramite la e.Values
raccolta. Come si può notare, il valore appena aggiunto ProductName
è accessibile tramite e.Values["ProductName"]
.
La figura 8 mostra la AddProduct.aspx
pagina immediatamente dopo l'aggiunta di un nuovo prodotto - Scott's Soda - al database. Si noti che il nome del prodotto appena aggiunto è indicato nell'etichetta della pagina master e che GridView è stato aggiornato per includere il prodotto e il relativo prezzo.
Figura 08: Etichetta della pagina master e GridView Mostra il prodotto Just-Added (Fare clic per visualizzare l'immagine full-size)
Riepilogo
Idealmente, una pagina master e le relative pagine di contenuto sono completamente separate tra loro e non richiedono alcun livello di interazione. Anche se le pagine master e le pagine del contenuto devono essere progettate con tale obiettivo, esistono diversi scenari comuni in cui una pagina del contenuto deve interfacciarsi con la relativa pagina master. Uno dei motivi più comuni è incentrato sull'aggiornamento di una particolare parte della visualizzazione della pagina master in base a un'azione che traspirò nella pagina del contenuto.
La buona notizia è che è relativamente semplice avere una pagina di contenuto a livello di codice con la relativa pagina master. Iniziare creando proprietà o metodi pubblici nella pagina master che incapsulano le funzionalità che devono essere richiamate da una pagina del contenuto. Nella pagina del contenuto accedere alle proprietà e ai metodi della pagina master tramite la proprietà tipizzata o usare la @MasterType
direttiva per creare un riferimento fortemente tipizzato Page.Master
alla pagina master.
Nell'esercitazione successiva viene esaminato come avere la pagina master a livello di codice con una delle relative pagine di contenuto.
Programmazione felice!
Altre informazioni
Per altre informazioni sugli argomenti illustrati in questa esercitazione, vedere le risorse seguenti:
- Accesso e aggiornamento dei dati in ASP.NET
- ASP.NET pagine master: suggerimenti, trucchi e trap
@MasterType
in ASP.NET 2.0- Passaggio di informazioni tra contenuto e pagine master
- Uso dei dati nelle esercitazioni di ASP.NET
Informazioni sull'autore
Scott Mitchell, autore di più libri ASP/ASP.NET e fondatore di 4GuysFromRolla.com, ha lavorato con le tecnologie Web Microsoft dal 1998. Scott lavora come consulente indipendente, allenatore e scrittore. Il suo ultimo libro è Sams Teach Yourself ASP.NET 3,5 in 24 ore. Scott può essere raggiunto all'indirizzo mitchell@4GuysFromRolla.com o tramite il suo blog all'indirizzo http://ScottOnWriting.NET.
Grazie speciali
Questa serie di esercitazioni è stata esaminata da molti revisori utili. Il revisore principale per questa esercitazione era Zack Jones. Interessati a esaminare i prossimi articoli MSDN? In tal caso, lasciami una riga in mitchell@4GuysFromRolla.com
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per