Interakce stránky předlohy se stránkou obsahu (C#)

Scott Mitchell

Zkoumá, jak volat metody, nastavit vlastnosti atd. stránky předlohy z kódu na stránce obsahu.

Úvod

V posledních pěti kurzech jsme se podívali na to, jak vytvořit stránku předlohy, definovat oblasti obsahu, vytvořit vazbu ASP.NET stránek na stránku předlohy a definovat obsah specifický pro danou stránku. Když návštěvník požádá o určitou stránku obsahu, značky obsahu a stránek předlohy se sloučí za běhu, což vede k vykreslení sjednocené hierarchie řízení. Proto jsme již viděli jeden způsob, jakým může stránka předlohy a jedna ze stránek jejího obsahu interagovat: stránka obsahu vyčte značky k transfuse na stránku předlohy ContentPlaceHolder ovládací prvky.

Musíme ještě prozkoumat, jak může stránka předlohy a stránka obsahu interagovat prostřednictvím kódu programu. Kromě definování značky pro ovládací prvky ContentPlaceHolder stránky předlohy může stránka obsahu také přiřadit hodnoty k veřejným vlastnostem stránky předlohy a vyvolat své veřejné metody. Podobně může stránka předlohy pracovat se svými stránkami obsahu. I když je programová interakce mezi předlohou a stránkou obsahu méně běžná než interakce mezi deklarativními značkami, existuje mnoho scénářů, ve kterých je taková programová interakce nutná.

V tomto kurzu prozkoumáme, jak může stránka obsahu programově pracovat se stránkou předlohy. V dalším kurzu se podíváme na to, jak může stránka předlohy podobně pracovat se svými stránkami obsahu.

Příklady programové interakce mezi stránkou obsahu a její stránkou předlohy

Pokud je potřeba nakonfigurovat konkrétní oblast stránky pro každou stránku, použijeme ovládací prvek ContentPlaceHolder. Ale co situace, kdy většina stránek potřebuje vygenerovat určitý výstup, ale malý počet stránek si ho musí přizpůsobit tak, aby zobrazoval něco jiného? Jeden takový příklad, který jsme prozkoumali v kurzu Multiple ContentPlaceHolders a Default Content , zahrnuje zobrazení přihlašovacího rozhraní na každé stránce. I když by většina stránek měla obsahovat přihlašovací rozhraní, mělo by být potlačeno pro několik stránek, například hlavní přihlašovací stránka (Login.aspx), stránka Vytvořit účet a další stránky, které jsou přístupné jenom ověřeným uživatelům. Kurz Multiple ContentPlaceHolders a Default Content ukázal, jak definovat výchozí obsah pro ContentPlaceHolder na stránce předlohy a jak ho přepsat na stránkách, kde nebyl výchozí obsah požadovaný.

Další možností je vytvořit v rámci stránky předlohy veřejnou vlastnost nebo metodu, která určuje, zda se má zobrazit nebo skrýt přihlašovací rozhraní. Stránka předlohy může například obsahovat veřejnou vlastnost s názvem ShowLoginUI , jejíž hodnota byla použita k nastavení Visible vlastnosti ovládacího prvku Přihlášení na stránce předlohy. Stránky obsahu, u kterých by mělo být uživatelské rozhraní přihlášení potlačeno, pak můžou programově nastavit ShowLoginUI vlastnost na false.

Možná nejběžnějším příkladem interakce obsahu a stránky předlohy je, když data zobrazená na stránce předlohy je třeba aktualizovat po provedení nějaké akce na stránce obsahu. Představte si stránku předlohy, která obsahuje Objekt GridView, který zobrazuje pět naposledy přidaných záznamů z konkrétní databázové tabulky a že jedna ze stránek obsahu obsahuje rozhraní pro přidávání nových záznamů do stejné tabulky.

Když uživatel navštíví stránku a přidá nový záznam, uvidí pět naposledy přidaných záznamů zobrazených na stránce předlohy. Po vyplnění hodnot sloupců nového záznamu odešle formulář. Za předpokladu, že GridView na stránce předlohy má jeho EnableViewState vlastnost nastavena na true (výchozí), jeho obsah se znovu načte ze stavu zobrazení a v důsledku toho se zobrazí pět stejných záznamů, i když novější záznam byl právě přidán do databáze. To může uživatele zmást.

Poznámka

I když zakážete stav zobrazení GridView tak, aby se při každém zpětném odeslání znovu připojil k podkladovému zdroji dat, nezobrazí se právě přidaný záznam, protože data jsou vázaná na GridView dříve v životním cyklu stránky než při přidání nového záznamu do databáze.

Chcete-li tento problém napravit, aby se právě přidaný záznam zobrazil v zobrazení GridView stránky předlohy při zpětném odeslání, musíme dát objektu GridView pokyn, aby po přidání nového záznamu do databáze znovu připojil ke zdroji dat. To vyžaduje interakci mezi obsahem a stránkami předlohy, protože rozhraní pro přidání nového záznamu (a jeho obslužné rutiny událostí) jsou na stránce obsahu, ale Objekt GridView, který je potřeba aktualizovat, je na stránce předlohy.

Vzhledem k tomu, že aktualizace zobrazení stránky předlohy z obslužné rutiny události na stránce obsahu je jednou z nejběžnějších potřeb interakce obsahu a stránky předlohy, pojďme se na toto téma podívat podrobněji. Soubor ke stažení pro tento kurz obsahuje databázi Microsoft SQL Server 2005 Express Edition s názvem NORTHWIND.MDF ve složce webuApp_Data. Databáze Northwind ukládá informace o produktu, zaměstnanci a prodeji fiktivní společnosti Northwind Traders.

Krok 1 vás provede zobrazením pěti naposledy přidaných produktů v zobrazení GridView na stránce předlohy. Krok 2 vytvoří stránku obsahu pro přidání nových produktů. Krok 3 popisuje, jak vytvořit veřejné vlastnosti a metody na stránce předlohy, a Krok 4 ukazuje, jak prostřednictvím kódu programu tyto vlastnosti a metody vytvořit ze stránky obsahu.

Poznámka

Tento kurz se nezabíná do specifik práce s daty v ASP.NET. Kroky pro nastavení stránky předlohy pro zobrazení dat a stránky obsahu pro vkládání dat jsou dokončené, ale jsou stručné. Podrobnější pohled na zobrazování a vkládání dat a používání ovládacích prvků SqlDataSource a GridView najdete v části Další materiály na konci tohoto kurzu.

Krok 1: Zobrazení pěti naposledy přidaných produktů na stránce předlohy

Otevřete stránku předlohy Site.master a přidejte do leftContent<div>objektu ovládací prvek Label a GridView. Vymažte vlastnost Label, Text nastavte jeho EnableViewState vlastnost na false a vlastnost ID na GridMessage; nastavte vlastnost GridView ID na RecentProducts. Dále z Designer rozbalte inteligentní značku GridView a zvolte, že chcete vytvořit vazbu na nový zdroj dat. Spustí se průvodce konfigurací zdroje dat. Vzhledem k tomu, že databáze Northwind ve App_Data složce je databáze Microsoft SQL Server, zvolte vytvoření SqlDataSource výběrem (viz Obrázek 1) a pojmenujte SqlDataSource RecentProductsDataSource.

Vytvoření vazby objektu GridView k ovládacímu prvku SqlDataSource s názvem RecentProductsDataSource

Obrázek 01: Vytvoření vazby objektu GridView na ovládací prvek SqlDataSource s názvem RecentProductsDataSource (kliknutím zobrazíte obrázek v plné velikosti)

Další krok nás vyzve k určení databáze, ke které se chcete připojit. V rozevíracím NORTHWIND.MDF seznamu zvolte soubor databáze a klikněte na Další. Vzhledem k tomu, že tuto databázi používáme poprvé, průvodce vám nabídne uložení připojovací řetězec do Web.config. Uložte připojovací řetězec s názvem NorthwindConnectionString.

Připojení k databázi Northwind

Obrázek 02: Připojení k databázi Northwind (kliknutím zobrazíte obrázek v plné velikosti)

Průvodce konfigurací zdroje dat poskytuje dva způsoby, kterými můžeme zadat dotaz použitý k načtení dat:

  • Zadáním vlastního příkazu SQL nebo uložené procedury nebo
  • Výběrem tabulky nebo zobrazení a následným určením sloupců, které se mají vrátit

Vzhledem k tomu, že chceme vrátit jenom pět naposledy přidaných produktů, musíme zadat vlastní příkaz SQL. Použijte následující dotaz SELECT:

SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC

Klíčové TOP 5 slovo vrátí pouze prvních pět záznamů z dotazu. Primární Products klíč tabulky , ProductIDje IDENTITY sloupec, který nás ujišťuje, že každý nový produkt přidaný do tabulky bude mít větší hodnotu než předchozí položka. Proto seřazení výsledků v ProductID sestupném pořadí vrátí produkty počínaje naposledy vytvořenými produkty.

Vrácení pěti naposledy přidaných produktů

Obrázek 03: Vrácení pěti naposledy přidaných produktů (kliknutím zobrazíte obrázek v plné velikosti)

Po dokončení průvodce vygeneruje Visual Studio dvě boundfields pro GridView k zobrazení ProductName polí a UnitPrice vrácených z databáze. V tomto okamžiku by deklarativní kód stránky předlohy měl obsahovat kód podobný následujícímu:

<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>

Jak vidíte, kód obsahuje: ovládací prvek Label Web (GridMessage); GridView RecentProductsse dvěma boundfieldy a ovládací prvek SqlDataSource, který vrací pět naposledy přidaných produktů.

Po vytvoření tohoto objektu GridView s nakonfigurovaným ovládacím prvku SqlDataSource navštivte web prostřednictvím prohlížeče. Jak vidíte na obrázku 4, v levém dolním rohu se zobrazí mřížka, která obsahuje pět naposledy přidaných produktů.

GridView zobrazí pět naposledy přidaných produktů.

Obrázek 04: GridView zobrazí pět naposledy přidaných produktů (kliknutím zobrazíte obrázek v plné velikosti).

Poznámka

Nebojte se vyčistit vzhled GridView. Mezi návrhy patří formátování zobrazené UnitPrice hodnoty jako měny a použití barev a písem pozadí ke zlepšení vzhledu mřížky.

Krok 2: Vytvoření stránky obsahu pro přidání nových produktů

Naším dalším úkolem je vytvořit stránku obsahu, ze které může uživatel přidat nový produkt do Products tabulky. Přidejte novou stránku obsahu do Admin složky s názvem AddProduct.aspxa nezapomeňte ji vytvořit vazbu se stránkou Site.master předlohy. Obrázek 5 znázorňuje Průzkumník řešení po přidání této stránky na web.

Přidání nové stránky ASP.NET do složky Správa

Obrázek 05: Přidání nové stránky ASP.NET do Admin složky (kliknutím zobrazíte obrázek v plné velikosti)

Vzpomeňte si, že v kurzu Určení názvu, metaznačky a dalších hlaviček HTML v rámci stránky předlohy jsme vytvořili vlastní třídu základní stránky s názvem BasePage , která vygenerovala název stránky, pokud nebyl explicitně nastaven. Přejděte na AddProduct.aspx třídu kódu na pozadí stránky a nechte ji odvodit z BasePage (místo z System.Web.UI.Page).

Nakonec soubor aktualizujte Web.sitemap tak, aby obsahoval položku pro tuto lekci. Pod lekci Problémy s pojmenováním ID ovládacího prvku přidejte následující kód <siteMapNode> :

<siteMapNode url="~/Admin/AddProduct.aspx" title="Content to Master Page Interaction" />

Jak je znázorněno na obrázku 6, přidání tohoto <siteMapNode> prvku se projeví v seznamu Lekce.

Vraťte se do AddProduct.aspx. V ovládacím prvku Content pro MainContent ContentPlaceHolder přidejte ovládací prvek DetailsView a pojmenujte ho NewProduct. Vytvořte vazbu DetailsView na nový ovládací prvek SqlDataSource s názvem NewProductDataSource. Stejně jako u sqldatasource v kroku 1 nakonfigurujte průvodce tak, aby používal databázi Northwind, a zvolte zadání vlastního příkazu SQL. Vzhledem k tomu, že DetailsView se použije k přidání položek do databáze, musíme zadat příkaz i SELECTINSERT příkaz . Použijte následující SELECT dotaz:

SELECT ProductName, UnitPrice FROM Products

Potom na kartě INSERT přidejte následující INSERT příkaz:

INSERT INTO Products(ProductName, UnitPrice) VALUES(@ProductName, @UnitPrice)

Po dokončení průvodce přejděte na inteligentní značku DetailsView a zaškrtněte políčko Povolit vkládání. Tím se přidá CommandField do DetailsView s jeho ShowInsertButton vlastností nastavenou na true. Vzhledem k tomu, že toto zobrazení DetailsView bude použito výhradně pro vkládání dat, nastavte vlastnost DetailsView DefaultMode na Inserthodnotu .

A je to! Pojďme tuto stránku otestovat. Přejděte AddProduct.aspx do prohlížeče a zadejte název a cenu (viz Obrázek 6).

Přidání nového produktu do databáze

Obrázek 06: Přidání nového produktu do databáze (kliknutím zobrazíte obrázek v plné velikosti)

Po zadání názvu a ceny nového produktu klikněte na tlačítko Vložit. To způsobí, že formulář bude postback. Při postbacku se provede příkaz ovládacího prvku INSERT SqlDataSource; jeho dva parametry jsou naplněny uživatelem zadanými hodnotami ve dvou ovládacích prvcích TextBox DetailsView. Bohužel neexistuje žádná vizuální zpětná vazba, že došlo k vložení. Bylo by hezké zobrazit zprávu s potvrzením, že byl přidán nový záznam. Nechávám to jako cvičení pro čtenáře. Také po přidání nového záznamu z DetailsView GridView na stránce předlohy stále zobrazuje stejných pět záznamů jako dříve; neobsahuje právě přidaný záznam. V nadcházejících krocích prozkoumáme, jak to napravit.

Poznámka

Kromě přidání nějaké formy vizuální zpětné vazby, že vložení bylo úspěšné, bych vám doporučil také aktualizovat DetailsView vkládání rozhraní tak, aby zahrnovalo ověření. V současné době neexistuje žádné ověření. Pokud uživatel zadá pro pole neplatnou hodnotu UnitPrice , například Příliš drahé, vyvolá se při zpětném odeslání výjimka, když se systém pokusí převést tento řetězec na desítkové číslo. Další informace o přizpůsobení rozhraní pro vkládání najdete v kurzu Přizpůsobení rozhraní pro úpravu dat z mého kurzu Práce s daty.

Krok 3: Vytvoření veřejných vlastností a metod na stránce předlohy

V kroku 1 jsme přidali ovládací prvek Label Web s názvem GridMessage nad GridView na stránce předlohy. Tento popisek slouží k volitelnému zobrazení zprávy. Například po přidání nového záznamu Products do tabulky můžeme chtít zobrazit zprávu s textem ProductName byl přidán do databáze. Místo toho, aby byl text pro tento popisek pevně zakódován na stránce předlohy, můžeme chtít, aby byla zpráva přizpůsobitelná stránkou obsahu.

Vzhledem k tomu, že ovládací prvek Popisek je implementován jako chráněná člen proměnná v rámci stránky předlohy, nelze k němu přistupovat přímo ze stránek obsahu. Aby bylo možné pracovat s popiskem v rámci stránky předlohy ze stránky obsahu (nebo jakéhokoli webového ovládacího prvku na stránce předlohy), musíme na stránce předlohy vytvořit veřejnou vlastnost, která zpřístupňuje webový ovládací prvek nebo slouží jako proxy server, pomocí kterého je možné přistupovat k jedné z jeho vlastností. Přidáním následující syntaxe do třídy kódu na pozadí stránky předlohy zobrazte vlastnost Label Text :

public string GridMessageText 
{ 
    get
    { 
        return GridMessage.Text; 
    } 
    set 
    {
        GridMessage.Text = value; 
    }
}

Když se do Products tabulky přidá nový záznam ze stránky obsahu, RecentProducts GridView na stránce předlohy musí znovu připojit ke svému podkladovému zdroji dat. Chcete-li obnovit vaz GridView volání jeho DataBind metody. Protože GridView na stránce předlohy není programově přístupný pro stránky obsahu, musíme vytvořit veřejnou metodu na stránce předlohy, která při zavolání znovu připojí data k GridView. Do třídy kódu na pozadí stránky předlohy přidejte následující metodu:

public void RefreshRecentProductsGrid() 
{ 
    RecentProducts.DataBind();
}

GridMessageText S vlastností a RefreshRecentProductsGrid metodou na místě, libovolná stránka obsahu může programově nastavit nebo číst hodnotu GridMessage vlastnosti Label Text nebo znovu připojit data k RecentProducts GridView. Krok 4 zkoumá, jak získat přístup k veřejným vlastnostem a metodám stránky předlohy ze stránky obsahu.

Poznámka

Nezapomeňte označit vlastnosti a metody stránky předlohy jako public. Pokud tyto vlastnosti a metody explicitně neozna čtete jako public, nebudou přístupné ze stránky obsahu.

Krok 4: Volání veřejných členů stránky předlohy ze stránky obsahu

Teď, když má stránka předlohy potřebné veřejné vlastnosti a metody, jsme připraveni vyvolat tyto vlastnosti a metody ze AddProduct.aspx stránky obsahu. Konkrétně potřebujeme nastavit vlastnost stránky GridMessageText předlohy a zavolat její RefreshRecentProductsGrid metodu po přidání nového produktu do databáze. Všechna ASP.NET data web řídí vyvolání událostí bezprostředně před a po dokončení různých úloh, což vývojářům stránek usnadňuje provádění programových akcí před nebo po úkolu. Například, když koncový uživatel klikne DetailsView vložit tlačítko, při postback DetailsView vyvolá svou ItemInserting událost před zahájením pracovního postupu vkládání. Potom vloží záznam do databáze. Po tomto, DetailsView vyvolá svou ItemInserted událost. Chcete-li tedy pracovat se stránkou předlohy po přidání nového produktu, vytvořte obslužnou rutinu události pro událost DetailsView ItemInserted .

Stránka obsahu může programově komunikovat se stránkou předlohy dvěma způsoby:

  • Page.Master Pomocí vlastnosti, která vrátí odkaz na stránku předlohy s volným typem, nebo
  • Pomocí direktivy zadejte typ stránky předlohy nebo cestu k @MasterType souboru stránky. Tím se automaticky přidá vlastnost silného typu na stránku s názvem Master.

Pojďme prozkoumat oba přístupy.

Použití vlastnosti volného typuPage.Master

Všechny webové stránky ASP.NET musí být odvozeny od Page třídy , která je umístěna System.Web.UI v oboru názvů . Třída Page obsahuje Master vlastnost , která vrací odkaz na stránku předlohy stránky. Pokud stránka nemá stránku Master předlohy, vrátí se null.

Vlastnost Master vrátí objekt typu MasterPage (nachází se také v System.Web.UI oboru názvů), což je základní typ, ze kterého jsou odvozeny všechny stránky předlohy. Proto pokud chcete použít veřejné vlastnosti nebo metody definované na stránce předlohy našeho webu, musíme přetypovat MasterPage objekt vrácený z Master vlastnosti na příslušný typ. Vzhledem k tomu, že jsme soubor stránky Site.masterpředlohy pojmenovali , měla třída kódu na pozadí název Site. Proto následující kód přetypuje Page.Master vlastnost na instanci třídy Site.

// Cast the loosely-typed Page.Master property and then set the GridMessageText property 
Site myMasterPage = Page.Master as Site;

Teď, když jsme přetypovali vlastnost volného typu Page.Master na typ, můžeme odkazovat Site na vlastnosti a metody specifické pro Web. Jak ukazuje obrázek 7, veřejná vlastnost GridMessageText se zobrazí v rozevíracím seznamu IntelliSense.

IntelliSense zobrazuje veřejné vlastnosti a metody naší stránky předlohy.

Obrázek 07: IntelliSense zobrazuje veřejné vlastnosti a metody naší stránky předlohy (kliknutím zobrazíte obrázek v plné velikosti).

Poznámka

Pokud jste pojmenovali soubor MasterPage.master stránky předlohy, název třídy kódu na pozadí stránky předlohy je MasterPage. To může vést k nejednoznačnému kódu při přetypování z typu System.Web.UI.MasterPage do vaší MasterPage třídy. Stručně řečeno, musíte plně kvalifikovat typ, na který přetypujete, což může být při použití modelu projektu webu trochu složitější. Navrhuji buď zajistit, aby při vytváření stránky předlohy byla pojmenována jinak, MasterPage.master nebo ještě lépe vytvořit odkaz na stránku předlohy se silnými typy.

Vytvoření Strongly-Typed reference pomocí direktivy@MasterType

Když se pozorně podíváte, uvidíte, že třída kódu na pozadí ASP.NET stránky je částečnou třídou (všimněte si klíčového partial slova v definici třídy). Částečné třídy byly zavedeny v jazyce C# a Visual Basic with.NET Framework 2.0 a v kostce umožňují definovat členy třídy ve více souborech. Soubor třídy kódu na pozadí , AddProduct.aspx.csnapříklad – obsahuje kód, který vytvoříme my, vývojář stránky. Kromě našeho kódu modul ASP.NET automaticky vytvoří samostatný soubor třídy s vlastnostmi a obslužnými rutinami událostí, které překládají deklarativní kód do hierarchie tříd stránky.

Automatické generování kódu, ke kterému dochází při návštěvě ASP.NET stránky, otevírá cestu k některým zajímavým a užitečným možnostem. Pokud v případě stránek předlohy sdělíme modulu ASP.NET, jakou stránku předlohy naše stránka obsahu používá, vygeneruje se vlastnost silného typu Master .

Direktiva@MasterType slouží k informování modulu ASP.NET o typu stránky předlohy stránky obsahu. Direktiva @MasterType může přijmout buď název typu stránky předlohy, nebo cestu k jejímu souboru. Chcete-li určit, aby AddProduct.aspx stránka používala Site.master jako stránku předlohy, přidejte následující direktivu na začátek souboru AddProduct.aspx:

<%@ MasterType VirtualPath="~/Site.master" %>

Tato direktiva dává modulu ASP.NET pokyn, aby prostřednictvím vlastnosti s názvem Masterpřidal odkaz na stránku předlohy se silnými typy. Se zavedenou @MasterType direktivou Site.master můžeme volat veřejné vlastnosti a metody stránky předlohy přímo prostřednictvím Master vlastnosti bez jakéhokoli přetypování.

Poznámka

Pokud direktivu @MasterType vynecháte, syntaxe Page.Master vrátí Master totéž: objekt volně napsaný na stránce předlohy. Pokud zahrnete direktivu @MasterType , Master vrátí se odkaz silného typu na zadanou stránku předlohy. Page.Master, ale stále vrací odkaz volného typu. Podrobnější informace o tom, proč se jedná o tento případ a jak Master se vlastnost konstruuje při @MasterType zahrnutí direktivy, najdete v blogové položce @MasterTypeK. Scotta Allena v ASP.NET 2.0.

Aktualizace stránky předlohy po přidání nového produktu

Teď, když víme, jak vyvolat veřejné vlastnosti a metody stránky předlohy ze stránky obsahu, jsme připraveni aktualizovat AddProduct.aspx stránku tak, aby se stránka předlohy aktualizovala po přidání nového produktu. Na začátku kroku 4 jsme vytvořili obslužnou rutinu události pro událost ovládacího prvku ItemInserting DetailsView, která se spustí okamžitě po přidání nového produktu do databáze. Do obslužné rutiny události přidejte následující kód:

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();
}

Výše uvedený kód používá vlastnost volného typu Page.Master i vlastnost silného typu Master . Všimněte si GridMessageText , že vlastnost je nastavená na "ProductName přidán do mřížky..." Hodnoty produktu, které jste právě přidali, jsou přístupné prostřednictvím e.Values kolekce. Jak vidíte, právě přidaná ProductName hodnota je přístupná přes e.Values["ProductName"].

Obrázek 8 znázorňuje AddProduct.aspx stránku hned po přidání nového produktu Scott's Soda do databáze. Všimněte si, že právě přidaný název produktu je uveden v popisku stránky předlohy a gridView byl aktualizován tak, aby zahrnoval produkt a jeho cenu.

Popisek stránky předlohy a Objekt GridView zobrazte Just-Added produkt

Obrázek 08: Popisek stránky předlohy a GridView Zobrazte Just-Added produkt (kliknutím zobrazíte obrázek v plné velikosti)

Souhrn

V ideálním případě jsou stránka předlohy a její stránky obsahu úplně oddělené a nevyžadují žádnou úroveň interakce. I když by stránky předlohy a stránky obsahu měly být navrženy s ohledem na tento cíl, existuje řada běžných scénářů, ve kterých musí stránka obsahu spolupracovat se stránkou předlohy. Jeden z nejběžnějších důvodů se zaměřuje na aktualizaci určité části zobrazení stránky předlohy na základě nějaké akce, která se na stránce obsahu dějila.

Dobrou zprávou je, že je poměrně jednoduché nechat stránku obsahu programově interagovat se stránkou předlohy. Začněte vytvořením veřejných vlastností nebo metod na stránce předlohy, které zapouzdřují funkce, které musí být vyvolány stránkou obsahu. Potom na stránce obsahu přejděte k vlastnostem a metodám stránky předlohy prostřednictvím vlastnosti s volným typem Page.Master nebo použijte direktivu @MasterType k vytvoření odkazu na stránku předlohy se silnými typy.

V dalším kurzu prozkoumáme, jak nechat stránku předlohy programově pracovat s některou ze stránek obsahu.

Všechno nejlepší na programování!

Další čtení

Další informace o tématech probíraných v tomto kurzu najdete v následujících zdrojích informací:

O autorovi

Scott Mitchell, autor několika knih o ASP/ASP.NET a zakladatel 4GuysFromRolla.com, pracuje s webovými technologiemi Microsoftu od roku 1998. Scott pracuje jako nezávislý konzultant, školitel a spisovatel. Jeho nejnovější kniha je Sams Teach Yourself ASP.NET 3,5 za 24 hodin. Scotta můžete zastihnout na mitchell@4GuysFromRolla.com nebo prostřednictvím jeho blogu na http://ScottOnWriting.NETadrese .

Zvláštní poděkování

Tato série kurzů byla zkontrolována mnoha užitečnými recenzenty. Hlavním recenzentem pro tento kurz byl Zack Jones. Chcete si projít moje nadcházející články na WEBU MSDN? Pokud ano, dejte mi čáru na mitchell@4GuysFromRolla.com