Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Prohlédne si různé techniky definování různých <prvků hlavy> na stránce předlohy ze stránky obsahu.
Úvod
Nové stránky předlohy vytvořené v sadě Visual Studio 2008 mají ve výchozím nastavení dva ovládací prvky ContentPlaceHolder: jeden pojmenovaný head a umístěný v elementu <head>
a jeden s názvem ContentPlaceHolder1
, umístěný ve webovém formuláři. Účelem je ContentPlaceHolder1
definovat oblast ve webovém formuláři, kterou lze přizpůsobit na základě stránky po stránce. ContentPlaceHolder head
umožňuje stránkám přidat do oddílu <head>
vlastní obsah. (Samozřejmě, tyto dva ContentPlaceHolders lze upravit nebo odebrat, a další ContentPlaceHolder mohou být přidány na stránku předlohy. Naše stránka Site.master
předlohy má v současné době čtyři ovládací prvky ContentPlaceHolder.)
Element HTML <head>
slouží jako úložiště pro informace o dokumentu webové stránky, který není součástí samotného dokumentu. Patří sem informace, jako je název webové stránky, metainformátory používané vyhledávacími weby nebo interními prohledávacími moduly, a odkazy na externí zdroje, jako jsou informační kanály RSS, JavaScript a soubory CSS. Některé z těchto informací mohou být relevantní pro všechny stránky na webu. Můžete například chtít globálně importovat stejná pravidla CSS a soubory JavaScriptu pro každou ASP.NET stránku. Existují však části elementu <head>
, které jsou specifické pro stránku. Hlavním příkladem je název stránky.
V tomto kurzu se podíváme na to, jak definovat globální značky a značky oddílu specifické pro <head>
stránku na stránce předlohy a na stránkách jejího obsahu.
Prozkoumání oddílu stránky předlohy<head>
Výchozí soubor stránky předlohy vytvořený sadou Visual Studio 2008 obsahuje ve své <head>
části následující kód:
<head runat="server">
<title>Untitled Page</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
Všimněte si, že <head>
element obsahuje runat="server"
atribut, který označuje, že se jedná o serverový ovládací prvek (místo statického HTML). Všechny ASP.NET stránky jsou odvozeny Page
z třídy, která je umístěna System.Web.UI
v oboru názvů. Tato třída obsahuje Header
vlastnost, která poskytuje přístup k oblasti stránky <head>
.
Header
Pomocí vlastnosti můžeme nastavit název stránky ASP.NET nebo přidat další značky do vykresleného <head>
oddílu. Potom je možné přizpůsobit prvek stránky obsahu tak, že <head>
do obslužné rutiny Page_Load
události stránky napíšete trochu kódu. V kroku 1 prozkoumáme, jak programově nastavit název stránky.
Značka zobrazená v elementu <head>
výše obsahuje také ContentPlaceHolder ovládací prvek s názvem head. Tento ovládací prvek ContentPlaceHolder není nutný, protože stránky obsahu mohou přidávat vlastní obsah do elementu <head>
programově. Je to užitečné, ale v situacích, kdy stránka obsahu potřebuje přidat statické značky k elementu <head>
, protože statické značky lze přidat do odpovídajícího ovládacího prvku Content deklarativně místo programově.
Kromě elementu <title>
a hlavního ContentPlaceHolder by měl element stránky předlohy <head>
obsahovat všechny <head>
značky -level, které jsou společné pro všechny stránky. Na našem webu používají všechny stránky pravidla CSS definovaná Styles.css
v souboru. V důsledku toho jsme aktualizovali <head>
prvek v kurzu Vytvoření rozložení Site-Wide se stránkami předlohy tak, aby zahrnoval odpovídající <link>
prvek.
Site.master
Aktuální <head>
revize stránky předlohy je zobrazena níže.
<head runat="server">
<title>Untitled Page</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
<link href="Styles.css" rel="stylesheet" type="text/css" />
</head>
Krok 1: Nastavení názvu stránky obsahu
Název webové stránky je určen prostřednictvím elementu <title>
. Je důležité nastavit název každé stránky na odpovídající hodnotu. Při návštěvě stránky se její název zobrazí v záhlaví prohlížeče. Při vytváření záložek stránky navíc prohlížeče používají název stránky jako navrhovaný název záložky. Mnoho vyhledávacích webů také zobrazuje název stránky při zobrazení výsledků hledání.
Poznámka
Ve výchozím nastavení sada Visual Studio nastaví <title>
prvek na stránce předlohy na "Stránka bez názvu". Podobně mají nové stránky ASP.NET nastavenou <title>
také na "Stránka bez názvu". Vzhledem k tomu, že můžete snadno zapomenout nastavit název stránky na odpovídající hodnotu, existuje na internetu mnoho stránek s názvem "Stránka bez názvu". Hledání webových stránek s tímto názvem na Googlu vrátí přibližně 2 460 000 výsledků. Dokonce i Microsoft je náchylný k publikování webových stránek s názvem "Stránka bez názvu". V době psaní tohoto textu vyhledávání Google nahlásilo 236 takových webových stránek v Microsoft.com doméně.
Stránka ASP.NET může určit název jedním z následujících způsobů:
- Umístěním hodnoty přímo do elementu
<title>
- Použití atributu
Title
v direktivě<%@ Page %>
- Programové nastavení vlastnosti stránky
Title
pomocí kódu, jako jePage.Title="title"
neboPage.Header.Title="title"
.
Stránky obsahu nemají <title>
prvek, protože je definovaný na stránce předlohy. Proto k nastavení názvu stránky obsahu můžete buď použít <%@ Page %>
atribut direktivy Title
, nebo ho nastavit programově.
Deklarativní nastavení názvu stránky
Název stránky obsahu lze deklarativně nastavit prostřednictvím Title
atributu direktivy<%@ Page %>
. Tuto vlastnost lze nastavit přímou úpravou direktivy <%@ Page %>
nebo prostřednictvím okno Vlastnosti. Pojďme se podívat na oba přístupy.
V zobrazení Zdroj vyhledejte direktivu <%@ Page %>
, která je v horní části deklarativní značky stránky. Direktiva <%@ Page %>
pro Default.aspx
:
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>
Direktiva <%@ Page %>
určuje atributy specifické pro stránku používané modulem ASP.NET při analýze a kompilaci stránky. To zahrnuje soubor stránky předlohy, umístění souboru kódu a jeho název a další informace.
Ve výchozím nastavení sada Visual Studio při vytváření nové stránky obsahu nastaví Title
atribut na Stránka bez názvu.
Title
Změňte Default.aspx
atribut z "Stránka bez názvu" na "Kurzy stránky předlohy" a pak zobrazte stránku v prohlížeči. Obrázek 1 znázorňuje záhlaví prohlížeče, který odráží nový název stránky.
Obrázek 01: Záhlaví prohlížeče teď zobrazuje "Kurzy stránky předlohy" místo "Stránka bez názvu"
Název stránky může být také nastaven z okno Vlastnosti. V okno Vlastnosti vyberte v rozevíracím seznamu DOKUMENT a načtěte vlastnosti na úrovni stránky, včetně Title
vlastnosti. Obrázek 2 znázorňuje okno Vlastnosti po Title
nastavení na "Kurzy stránky předlohy".
Obrázek 02: Název můžete nakonfigurovat také v okně Vlastnosti.
Programové nastavení názvu stránky
Při vykreslení stránky <head runat="server">
předlohy strojem HtmlHead
ASP.NET se přeloží do instance třídy. Třída HtmlHead
má Title
vlastnost , jejíž hodnota se odráží v vykreslené <title>
element. Tato vlastnost je přístupná z třídy kódu na pozadí ASP.NET stránky prostřednictvím Page.Header.Title
. Stejná vlastnost je také přístupná přes Page.Title
.
Pokud chcete programově nastavit název stránky, přejděte na About.aspx
třídu kódu na pozadí stránky a vytvořte obslužnou rutinu události pro událost stránky Load
. Dále nastavte název stránky na "Kurzy stránky předlohy :: About :: date", kde datum je aktuální datum. Po přidání tohoto kódu by měla Page_Load
obslužná rutina události vypadat nějak takto:
protected void Page_Load(object sender, EventArgs e)
{
Page.Title = string.Format("Master Page Tutorials :: About :: {0:d}", DateTime.Now);
}
Obrázek 3 znázorňuje záhlaví prohlížeče při návštěvě About.aspx
stránky.
Obrázek 03: Název stránky je programově nastavený a zahrnuje aktuální datum.
Krok 2: Automatické přiřazení názvu stránky
Jak jsme viděli v kroku 1, název stránky je možné nastavit deklarativně nebo programově. Pokud ale zapomenete explicitně změnit název na něco popisnějšího, bude mít vaše stránka výchozí název "Stránka bez názvu". V ideálním případě by se název stránky pro nás nastavil automaticky v případě, že explicitně nezadáme její hodnotu. Pokud je například za běhu název stránky "Stránka bez názvu", můžeme chtít, aby se název automaticky aktualizoval tak, aby byl stejný jako název souboru stránky ASP.NET. Dobrou zprávou je, že s trochou počáteční práce je možné mít název přiřazen automaticky.
Všechny ASP.NET webové stránky jsou odvozeny Page
od třídy v System.Web.UI
oboru názvů. Třída Page
definuje minimální funkčnost, kterou ASP.NET stránka potřebuje, a zveřejňuje základní vlastnosti, jako jsou IsPostBack
, IsValid
Request
, a , a Response
mnoho dalších. Každá stránka ve webové aplikaci často vyžaduje další funkce. Běžným způsobem, jak to zajistit, je vytvořit vlastní třídu základní stránky. Třída vlastní základní stránky je třída, kterou vytvoříte a která je odvozena od Page
třídy a obsahuje další funkce. Jakmile je tato základní třída vytvořena, můžete z ní odvodit své ASP.NET stránky (místo Page
třídy), a nabídnout tak rozšířené funkce pro vaše ASP.NET stránky.
V tomto kroku vytvoříme základní stránku, která automaticky nastaví název stránky na název stránky ASP.NET, pokud nadpis nebyl jinak explicitně nastaven. Krok 3 se zabývá nastavením názvu stránky na základě mapy webu.
Poznámka
Důkladné prozkoumání vytváření a používání vlastních tříd základní stránky je nad rámec této série kurzů.
Vytvoření třídy základní stránky
Naším prvním úkolem je vytvořit základní třídu stránky, což je třída, která rozšiřuje Page
třídu. Začněte tím, že App_Code
do projektu přidáte složku tak, že kliknete pravým tlačítkem na název projektu v Průzkumník řešení, zvolíte Přidat ASP.NET složku a pak vyberete App_Code
. Potom klikněte pravým tlačítkem na App_Code
složku a přidejte novou třídu s názvem BasePage.cs
. Obrázek 4 znázorňuje Průzkumník řešení po App_Code
přidání složky a BasePage.cs
třídy.
Obrázek 04: Přidání App_Code
složky a třídy s názvem BasePage
Poznámka
Visual Studio podporuje dva režimy řízení projektů: projekty webu a projekty webových aplikací. Složka App_Code
je navržená pro použití s modelem projektu webu. Pokud používáte model projektu webové aplikace, umístěte BasePage.cs
třídu do složky s názvem jiného než App_Code
, například Classes
. Další informace k tomuto tématu najdete v tématu Migrace projektu webu do projektu webové aplikace.
Vzhledem k tomu, že vlastní základní stránka slouží jako základní třída pro třídy kódu na pozadí ASP.NET stránek, musí třídu rozšířit Page
.
public class BasePage : System.Web.UI.Page
{
}
Pokaždé, když je požadována ASP.NET stránka, prochází řadou fází, které vyvrcholí vykreslením požadované stránky do HTML. Do fáze se můžeme připojit přepsáním Page
metody třídy OnEvent
. Pro naši základní stránku nastavíme automaticky název, pokud není explicitně určen LoadComplete
fází (což, jak jste možná uhodli, nastane po Load
fázi).
Chcete-li toho dosáhnout, přepište metodu OnLoadComplete
a zadejte následující kód:
protected override void OnLoadComplete(EventArgs e)
{
// Set the page's title, if necessary
if (string.IsNullOrEmpty(Page.Title) || Page.Title == "Untitled Page")
{
// Determine the filename for this page
string fileName = System.IO.Path.GetFileNameWithoutExtension(Request.PhysicalPath);
Page.Title = fileName;
}
base.OnLoadComplete(e);
}
Metoda OnLoadComplete
začíná určením, zda Title
vlastnost ještě nebyla explicitně nastavena.
Title
Pokud je null
vlastnost , prázdný řetězec nebo má hodnotu "Stránka bez názvu", je přiřazena k názvu požadované ASP.NET stránky. Fyzická cesta k požadované stránce ASP.NET , C:\MySites\Tutorial03\Login.aspx
například , je přístupná prostřednictvím Request.PhysicalPath
vlastnosti . Metoda Path.GetFileNameWithoutExtension
se používá k vytažení pouze části názvu souboru a tento název souboru je pak přiřazen vlastnosti Page.Title
.
Poznámka
Zvu vás, abyste tuto logiku vylepšili a vylepšili tak formát názvu. Pokud je Company-Products.aspx
například název stránky , výše uvedený kód vytvoří název "Produkty společnosti", ale v ideálním případě by byla pomlčka nahrazena mezerou, jako je tomu v části "Firemní produkty". Zvažte také přidání mezery při každé změně případu. To znamená, že zvažte přidání kódu, který transformuje název souboru OurBusinessHours.aspx
na název "Naše pracovní doba".
Zdědit základní třídu stránky obsahu
Teď musíme aktualizovat stránky ASP.NET na našem webu tak, aby byly odvozeny z vlastní základní stránky (BasePage
) místo Page
z třídy. Chcete-li toho dosáhnout, přejděte na každou třídu kódu na pozadí a změňte deklaraci třídy z:
public partial class ClassName : System.Web.UI.Page
Do:
public partial class ClassName : BasePage
Až to uděláte, navštivte web přes prohlížeč. Pokud navštívíte stránku, jejíž název je explicitně nastavený, například Default.aspx
nebo About.aspx
, použije se explicitně zadaný název. Pokud však navštívíte stránku, jejíž název nebyl změněn z výchozího ("Stránka bez názvu"), základní třída stránky nastaví název na název stránky.
Obrázek 5 znázorňuje MultipleContentPlaceHolders.aspx
stránku při zobrazení v prohlížeči. Všimněte si, že název je přesně název stránky (bez přípony) MultipleContentPlaceHolders.
Obrázek 05: Pokud název není explicitně zadán, název souboru stránky se automaticky použije (kliknutím zobrazíte obrázek v plné velikosti).
Krok 3: Vytvoření názvu stránky na mapě webu
ASP.NET nabízí robustní architekturu map webů, která vývojářům stránek umožňuje definovat hierarchickou mapu webu v externím prostředku (například v souboru XML nebo databázové tabulce) spolu s webovými ovládacími prvky pro zobrazení informací o mapě webu (například ovládací prvky SiteMapPath, Menu a TreeView).
Ke struktuře mapy webu lze přistupovat také programově z třídy kódu na pozadí ASP.NET stránky. Tímto způsobem můžeme automaticky nastavit název stránky na název odpovídajícího uzlu v mapě webu. Pojďme vylepšit třídu vytvořenou BasePage
v kroku 2 tak, aby tuto funkci nabízí. Nejdřív ale musíme vytvořit mapu webu pro náš web.
Poznámka
V tomto kurzu se předpokládá, že čtenář už má zkušenosti s ASP. Funkce mapy webu pro net Další informace o používání mapy webu najdete v mé sérii vícedílných článků Zkoumání asp. Navigace na webu v NET.
Vytvoření mapy webu
Systém mapy webu je sestaven na základě modelu zprostředkovatele, který odděluje rozhraní API mapy webu od logiky serializace informací o mapě webu mezi pamětí a trvalým úložištěm. Rozhraní .NET Framework se dodává s XmlSiteMapProvider
třídou, což je výchozí poskytovatel mapy webu. Jak už název napovídá, XmlSiteMapProvider
používá soubor XML jako úložiště map webu. Pojďme tohoto zprostředkovatele použít k definování mapy webu.
Začněte vytvořením souboru mapy webu v kořenové složce webu s názvem Web.sitemap
. Chcete-li toho dosáhnout, klikněte pravým tlačítkem na název webu v Průzkumník řešení, zvolte Přidat novou položku a vyberte šablonu Mapa webu. Ujistěte se, že má soubor název Web.sitemap
, a klikněte na Přidat.
Obrázek 06: Přidání souboru s názvem Web.sitemap
do kořenové složky webu (kliknutím zobrazíte obrázek v plné velikosti)
Do souboru přidejte následující kód XML Web.sitemap
:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Default.aspx" title="Home">
<siteMapNode url="~/About.aspx" title="About the Author" />
<siteMapNode url="~/MultipleContentPlaceHolders.aspx" title="Using Multiple ContentPlaceHolder Controls" />
</siteMapNode>
</siteMap>
Tento kód XML definuje hierarchickou strukturu mapy webu zobrazenou na obrázku 7.
Obrázek 07: Mapa webu se v současné době skládá ze tří uzlů mapy webu
Strukturu mapy webu budeme aktualizovat v budoucích kurzech, jakmile budeme přidávat nové příklady.
Aktualizace stránky předlohy tak, aby zahrnovala webové ovládací prvky navigace
Teď, když máme definovanou mapu webu, aktualizujeme stránku předlohy tak, aby zahrnovala navigační webové ovládací prvky. Konkrétně přidáme ovládací prvek ListView do levého sloupce v části Lekce, který vykreslí neuspořádaný seznam s položkou seznamu pro každý uzel definovaný v mapě webu.
Poznámka
Ovládací prvek ListView je v ASP.NET verze 3.5 nový. Pokud používáte předchozí verzi ASP.NET, použijte místo toho ovládací prvek Repeater.
Začněte odebráním existujícího neuspořádaného seznamu z oddílu Lekce. Dále přetáhněte ovládací prvek ListView ze sady nástrojů a přesuňte ho pod nadpis Lekce. ListView se nachází v části Data panelu nástrojů spolu s dalšími ovládacími prvky zobrazení: GridView, DetailsView a FormView. Vlastnost ID objektu ListView nastavte na LessonsList
.
V Průvodci konfigurací zdroje dat zvolte vytvořit vazbu objektu ListView na nový ovládací prvek SiteMapDataSource s názvem LessonsDataSource
. Ovládací prvek SiteMapDataSource vrátí hierarchickou strukturu ze systému mapování lokality.
Obrázek 08: Vytvoření vazby ovládacího prvku SiteMapDataSource k ovládacímu LessonsList
prvku ListView (kliknutím zobrazíte obrázek v plné velikosti)
Po vytvoření ovládacího prvku SiteMapDataSource musíme definovat šablony ListView tak, aby vykresloval neuspořádaný seznam s položkou seznamu pro každý uzel vrácený ovládacím prvku SiteMapDataSource. K tomu můžete použít následující značky šablony:
<asp:ListView ID="LessonsList" runat="server" DataSourceID="LessonsDataSource">
<LayoutTemplate>
<ul>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li><asp:HyperLink runat="server" ID="lnkLesson" NavigateUrl='<%# Eval("Url") %>'
Text='<%# Eval("Title") %>' /></li>
</ItemTemplate>
</asp:ListView>
Vygeneruje LayoutTemplate
kód pro neuspořádaný seznam (<ul>...</ul>
), zatímco ItemTemplate
vykreslí každou položku vrácenou serverem SiteMapDataSource jako položku seznamu (<li>
), která obsahuje odkaz na konkrétní lekci.
Po konfiguraci šablon ListView navštivte web. Jak ukazuje obrázek 9, oddíl Lekce obsahuje jednu položku s odrážkami– Domů. Kde jsou lekce o ovládacích prvcích About a Using Multiple ContentPlaceHolder? SiteMapDataSource je navržen tak, aby vracel hierarchickou sadu dat, ale ListView ovládací prvek může zobrazit pouze jednu úroveň hierarchie. V důsledku toho se zobrazí pouze první úroveň uzlů mapy webu vrácených SiteMapDataSource.
Obrázek 09: Oddíl Lekce obsahuje jednu položku seznamu (kliknutím zobrazíte obrázek v plné velikosti)
Pokud chcete zobrazit více úrovní, mohli bychom vnořit více objektů ListView v rámci objektu ItemTemplate
. Tato technika byla prozkoumána v kurzu Stránky předlohy a navigace na webu mého kurzu Práce s daty. V této sérii kurzů však bude mapa webu obsahovat pouze dvě úrovně: Home (nejvyšší úroveň); a každou lekci jako dítě Domova. Místo vytváření vnořeného Objektu ListView můžeme dát pokyn SiteMapDataSource, aby nevrátil počáteční uzel nastavením jeho ShowStartingNode
vlastnosti na false
. Čistý efekt spočívá v tom, že SiteMapDataSource začíná vrácením druhé vrstvy uzlů mapy webu.
Po této změně ListView zobrazí položky odrážek pro lekce O aplikaci a Použití více ovládacích prvků ContentPlaceHolder, ale vynechá položku odrážky pro Domovskou stránku. Abychom tento problém napravili, můžeme explicitně přidat položku s odrážkou pro domovskou stránku v :LayoutTemplate
<LayoutTemplate>
<ul>
<li><asp:HyperLink runat="server" ID="lnkLesson"
NavigateUrl="~/Default.aspx" Text="Home" /></li>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</ul>
</LayoutTemplate>
Když nakonfigurujete SiteMapDataSource tak, aby vynechal počáteční uzel, a explicitně přidáte položku s odrážkou Domů, zobrazí se v části Lessons (Lekce) zamýšlený výstup.
Obrázek 10: Oddíl Lekce obsahuje odrážkovou položku pro domovský a podřízený uzel (kliknutím zobrazíte obrázek v plné velikosti).
Nastavení názvu na základě mapy webu
Když je mapa webu na místě, můžeme naši BasePage
třídu aktualizovat tak, aby používala název zadaný v mapě webu. Stejně jako v kroku 2 chceme název uzlu mapy webu použít jenom v případě, že vývojář stránky název stránky explicitně nenastavil. Pokud požadovaná stránka nemá explicitně nastavený název stránky a nenalezne se v mapě webu, vrátíme se k použití názvu požadované stránky (bez přípony), jak jsme to udělali v kroku 2. Tento rozhodovací proces znázorňuje obrázek 11.
Obrázek 11: Při absenci explicitně nastaveného názvu stránky se použije název odpovídajícího uzlu mapy webu.
Aktualizujte metodu BasePage
třídy tak, OnLoadComplete
aby zahrnovala následující kód:
protected override void OnLoadComplete(EventArgs e)
{
// Set the page's title, if necessary
if (string.IsNullOrEmpty(Page.Title) || Page.Title == "Untitled Page")
{
// Is this page defined in the site map?
string newTitle = null;
SiteMapNode current = SiteMap.CurrentNode;
if (current != null)
{
newTitle = current.Title;
}
else
{
// Determine the filename for this page
newTitle = System.IO.Path.GetFileNameWithoutExtension(Request.PhysicalPath);
}
Page.Title = newTitle;
}
base.OnLoadComplete(e);
}
Stejně jako předtím metoda začíná určením, OnLoadComplete
zda byl název stránky explicitně nastaven. Pokud Page.Title
je null
hodnota , prázdný řetězec nebo má přiřazenou hodnotu "Stránka bez názvu", kód automaticky přiřadí hodnotu k Page.Title
.
K určení názvu, který se má použít, začíná kód odkazováním na SiteMap
vlastnost třídyCurrentNode
.
CurrentNode
SiteMapNode
vrátí instanci v mapě webu, která odpovídá aktuálně požadované stránce. Za předpokladu, že se aktuálně požadovaná stránka nachází v mapě webu, SiteMapNode
Title
je k názvu stránky přiřazena vlastnost . Pokud aktuálně požadovaná stránka není v mapě webu, CurrentNode
vrátí hodnotu null
a název požadované stránky se použije jako název (jak bylo provedeno v kroku 2).
Obrázek 12 znázorňuje MultipleContentPlaceHolders.aspx
stránku při prohlížení v prohlížeči. Vzhledem k tomu, že název této stránky není explicitně nastaven, použije se místo něj odpovídající název uzlu mapy webu.
Obrázek 12: Název MultipleContentPlaceHolders.aspx
stránky se přetáhne z mapy webu.
Krok 4: Přidání dalších Page-Specific značek do oddílu<head>
Kroky 1, 2 a 3 se zabývaly přizpůsobením elementu <title>
na jednotlivých stránkách. Kromě <title>
<head>
nástroje může oddíl obsahovat <meta>
prvky a <link>
elementy. Jak jsme uvedli dříve v tomto kurzu, Site.master
<head>
část obsahuje <link>
element pro Styles.css
. Vzhledem k tomu, že tento <link>
prvek je definován v rámci stránky předlohy, je zahrnut v oddílu <head>
pro všechny stránky obsahu. Jak ale můžeme přidávat <meta>
prvky a <link>
na stránku po stránce?
Nejjednodušší způsob, jak do oddílu <head>
přidat obsah specifický pro stránku, je vytvořit na stránce předlohy ovládací prvek ContentPlaceHolder. Takový contentPlaceHolder (s názvem head
) už máme. Chcete-li tedy přidat vlastní <head>
značky, vytvořte na stránce odpovídající ovládací prvek obsahu a umístěte značky tam.
Abychom ilustrovali přidání vlastních <head>
revizí na stránku, zahrňme <meta>
element description k naší aktuální sadě stránek obsahu. Element <meta>
description poskytuje stručný popis webové stránky. Většina vyhledávačů tyto informace při zobrazení výsledků hledání začleňuje do nějaké formy.
Element <meta>
description má následující tvar:
<meta name="description" content="description of the web page" />
Chcete-li přidat tento kód na stránku obsahu, přidejte výše uvedený text do ovládacího prvku Content, který se mapuje na hlavní stránku předlohy ContentPlaceHolder. Pokud chcete například definovat <meta>
element description pro Default.aspx
, přidejte následující kód:
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<meta name="description" content="Welcome to Scott Mitchell's Master Page Tutorials series." />
</asp:Content>
Vzhledem k tomu, že hlavní ContentPlaceHolder není v těle stránky HTML, kód přidaný do ovládacího prvku Obsahu se nezobrazí v návrhovém zobrazení. Pokud chcete zobrazit <meta>
element description, přejděte Default.aspx
do prohlížeče. Po načtení stránky zobrazte zdroj a všimněte si, že <head>
oddíl obsahuje kód zadaný v ovládacím prvku Obsah.
Chvíli si přidejte <meta>
elementy popisu do About.aspx
, MultipleContentPlaceHolders.aspx
a Login.aspx
.
Přidávání značek do<head>
oblasti prostřednictvím kódu programu
Hlavní ContentPlaceHolder nám umožňuje deklarativně přidat vlastní značky do oblasti stránky předlohy <head>
. Vlastní značky je možné přidat také programově. Vzpomeňte Page
si, že vlastnost třídy Header
vrací HtmlHead
instanci definovanou na stránce předlohy ().<head runat="server">
Možnost programově přidávat obsah do <head>
oblasti je užitečná, pokud je obsah, který se má přidat, dynamický. Možná je to založené na tom, že uživatel navštíví stránku; Možná ho někdo vytahuje z databáze. Bez ohledu na důvod můžete do objektu HtmlHead
přidat obsah přidáním ovládacích prvků do jeho kolekce Controls, například takto:
// Programmatically add a <meta> element to the Header
HtmlMeta keywords = new HtmlMeta();
keywords.Name = "keywords";
keywords.Content = "master page,asp.net,tutorial";
Page.Header.Controls.Add(keywords);
Výše uvedený kód přidá <meta>
do <head>
oblasti prvek keywords, který poskytuje seznam klíčových slov, která popisují stránku, oddělených čárkami. Všimněte si, že pokud chcete přidat <meta>
značku, vytvoříte HtmlMeta
instanci, nastavíte její Name
vlastnosti a Content
a pak ji přidáte do Controls
Header
kolekce . Podobně platí, že pokud chcete přidat prvek prostřednictvím kódu <link>
programu, vytvořte HtmlLink
objekt, nastavte jeho vlastnosti a pak ho Controls
přidejte do Header
kolekce .
Poznámka
Pokud chcete přidat libovolný kód, vytvořte LiteralControl
instanci, nastavte její Text
vlastnost a pak ji přidejte do Header
Controls
kolekce .
Souhrn
V tomto kurzu jsme se podívali na různé způsoby, jak přidat <head>
značky oblasti po jednotlivých stránkách. Stránka předlohy by měla obsahovat HtmlHead
instanci (<head runat="server">
) s objektem ContentPlaceHolder. Instance HtmlHead
umožňuje stránkám obsahu programově přistupovat k <head>
oblasti a deklarativně a programově nastavit název stránky; ContentPlaceHolder ovládací prvek umožňuje vlastní kód přidat do oddílu <head>
deklarativně prostřednictvím content ovládacího prvku.
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í:
- Dynamické nastavení názvu stránky v ASP.NET
- Zkoumání asp. Net – Navigace na webu
- Jak používat metaznačky HTML
- Stránky předlohy v ASP.NET
- Použití ovládacích prvků ListView a DataPager ASP.NET 3.5
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 poslední kniha je Sams Teach Yourself ASP.NET 3.5 in 24 Hours. Scotta můžete zastihnout na adrese mitchell@4GuysFromRolla.com nebo prostřednictvím svého blogu na adrese http://ScottOnWriting.NET.
Zvláštní poděkování
Tato série kurzů byla zkontrolována mnoha užitečnými recenzenty. Hlavními recenzenty pro tento kurz byli Zack Jones a Suchi Banerjee. Chtěli byste si projít své nadcházející články na webu MSDN? Pokud ano, dejte mi řádek na mitchell@4GuysFromRolla.com.