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.
Hledá různé techniky pro definování různých <prvků hlav 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 s názvem head
a umístěný v elementu <head>
a jeden s názvem ContentPlaceHolder1
, umístěný ve webovém formuláři. Účelem ContentPlaceHolder1
příkazu je definovat oblast ve webovém formuláři, kterou lze přizpůsobit stránku po stránce. ContentPlaceHolder head
umožňuje stránkám přidat do oddílu <head>
vlastní obsah. (Tyto dva ContentPlaceHolders lze samozřejmě upravit nebo odebrat a na stránku předlohy lze přidat další ContentPlaceHolder. Naše stránka předlohy Site.master
v současné době obsahuje čtyři ovládací prvky ContentPlaceHolder.)
Element HTML <head>
slouží jako úložiště informací 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, javascriptové soubory 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 prozkoumáme, jak definovat globální značky oddílu a značky oddílu specifické pro <head>
danou stránku na stránce předlohy a na stránkách jejího obsahu.
Zkoumání oddílu stránky předlohy<head>
Výchozí soubor stránky předlohy vytvořený sadou Visual Studio 2008 obsahuje následující kód v jeho <head>
oddílu:
<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 (nikoli statický kód HTML). Všechny ASP.NET stránky jsou odvozeny Page
od 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 do vykresleného oddílu přidat další značky<head>
. Pak je možné přizpůsobit prvek stránky obsahu tak, že <head>
do obslužné rutiny události stránky Page_Load
napíšete trochu kódu. V kroku 1 prozkoumáme, jak nastavit název stránky prostřednictvím kódu programu.
Kód 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řidat vlastní obsah do <head>
prvku programově. Je to ale užitečné v situacích, kdy stránka obsahu potřebuje k elementu <head>
přidat statický kód, protože statické značky je možné přidat do odpovídajícího ovládacího prvku obsahu deklarativně místo programově.
Kromě elementu <title>
a head
ContentPlaceHolder by měl element stránky <head>
předlohy obsahovat všechny <head>
značky -level, které jsou společné pro všechny stránky. Na našem webu všechny stránky používají 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. Aktuální <head>
revize naší Site.master
stránky předlohy jsou zobrazeny 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. Kromě toho prohlížeče při vytváření záložek stránky 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>
element 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". Protože může být snadné 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 nahlásilo vyhledávání Google 236 takových webových stránek v Microsoft.com doméně.
Stránka ASP.NET může zadat 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 je neboPage.Title="title"
Page.Header.Title="title"
.
Stránky obsahu nemají <title>
element, 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 nastavit deklarativně prostřednictvím atributu Title
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ího kódu stránky. Direktiva <%@ Page %>
pro Default.aspx
:
<%@ Page Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" 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 s kódem 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. Na obrázku 1 je záhlaví prohlížeče, které odráží nový název stránky.
Obrázek 01: Záhlaví prohlížeče teď místo "Stránky bez názvu" zobrazuje "Kurzy stránky předlohy"
Název stránky může být také nastaven z okno Vlastnosti. V okno Vlastnosti vyberte z rozevíracího seznamu DOKUMENT a načtěte vlastnosti na úrovni stránky, které vlastnost obsahujíTitle
. 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
Značky stránky <head runat="server">
předlohy se přeloží do HtmlHead
instance třídy , když je stránka vykreslena modulem ASP.NET. Třída HtmlHead
má Title
vlastnost , jejíž hodnota se odráží v vykreslení <title>
elementu. 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 přístupná také přes Page.Title
.
Pokud si chcete procvičovat programové nastavení názvu 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 :: O aplikaci :: datum", kde datum je aktuální datum. Po přidání tohoto kódu by vaše Page_Load
obslužná rutina události měla vypadat nějak takto:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Page.Title = String.Format("Master Page Tutorials :: About :: {0:d}", DateTime.Now)
End Sub
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 nastaven programově 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 se dá 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 automaticky aktualizoval tak, aby byl stejný jako název souboru ASP.NET stránky. Dobrou zprávou je, že s trochou počáteční práce je možné název přiřadit automaticky.
Všechny ASP.NET webové stránky jsou odvozeny od Page
třídy v oboru názvů System.Web.UI. Třída Page
definuje minimální funkčnost, kterou ASP.NET stránka potřebuje, a kromě mnoha dalších zveřejňuje základní vlastnosti, jako jsou IsPostBack
, IsValid
Request
, a Response
. Často se stává, že každá stránka ve webové aplikaci vyžaduje další funkce. Běžným způsobem, jak to zajistit, je vytvořit vlastní základní třídu stránky. Vlastní třída základní stránky je třída, kterou vytvoříte a která je odvozena z Page
třídy a obsahuje další funkce. Jakmile je tato základní třída vytvořena, můžete z ní odvodit ASP.NET stránky (nikoli Page
z 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 souboru ASP.NET stránky, pokud název nebyl explicitně nastaven. Krok 3 se zabývá nastavením názvu stránky na základě mapy webu.
Poznámka
Důkladná kontrola 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.vb
. Obrázek 4 znázorňuje Průzkumník řešení po App_Code
přidání složky a BasePage.vb
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.vb
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
Inherits System.Web.UI.Page
End Class
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 Overrides Sub OnLoadComplete(ByVal e As EventArgs)
' Set the page's title, if necessary
If String.IsNullOrEmpty(Page.Title) OrElse Page.Title = "Untitled Page" Then
' Determine the filename for this page
Dim fileName As String = System.IO.Path.GetFileNameWithoutExtension(Request.PhysicalPath)
Page.Title = fileName
End If
MyBase.OnLoadComplete(e)
End Sub
Metoda OnLoadComplete
začíná určením, zda Title
vlastnost ještě nebyla explicitně nastavena.
Title
Pokud je Nothing
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:
Partial Class About
Inherits System.Web.UI.Page
...
End Class
Do:
Partial Class About
Inherits BasePage
...
End Class
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 ListView nastavte ID
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 prvku LessonsList 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 Overrides Sub OnLoadComplete(ByVal e As EventArgs)
' Set the page's title, if necessary
If String.IsNullOrEmpty(Page.Title) OrElse Page.Title = "Untitled Page" Then
' Is this page defined in the site map?
Dim newTitle As String = Nothing
Dim current As SiteMapNode = SiteMap.CurrentNode
If current IsNot Nothing Then
newTitle = current.Title
Else
' Determine the filename for this page
newTitle = System.IO.Path.GetFileNameWithoutExtension(Request.PhysicalPath)
End If
Page.Title = newTitle
End If
MyBase.OnLoadComplete(e)
End Sub
Stejně jako dříve metoda začíná určením, OnLoadComplete
zda byl název stránky explicitně nastaven. Pokud Page.Title
je Nothing
prázdný řetězec nebo má přiřazenou hodnotu "Stránka bez názvu", kód automaticky přiřadí hodnotu .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
je k názvu stránky přiřazena vlastnost 's Title
. Pokud aktuálně požadovaná stránka není v mapě webu, CurrentNode
vrátí Nothing
se 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 toho odpovídající název jejího uzlu mapy webu.
Obrázek 12: Název stránky MultipleContentPlaceHolders.aspx je nahrán z mapy webu
Krok 4: Přidání dalších Page-Specific značek do oddílu<head>
Kroky 1, 2 a 3 se podívaly na přizpůsobení elementu <title>
na stránce po stránce. Kromě <title>
toho <head>
může oddíl obsahovat <meta>
prvky a <link>
prvky. Jak je uvedeno dříve v tomto kurzu, Site.master
část obsahuje <head>
<link>
element do Styles.css
. Vzhledem k tomu, že tento <link>
prvek je definován v rámci stránky předlohy, je součástí oddílu <head>
pro všechny stránky obsahu. Jak ale můžeme přidávat <meta>
prvky na <link>
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 (pojmenovaný) 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 ho tam.
Abychom si ilustrovali přidání vlastních <head>
značek na stránku, zahrňme <meta>
do aktuální sady stránek obsahu element description. Element <meta>
description poskytuje stručný popis webové stránky. Většina vyhledávacích webů tyto informace při zobrazení výsledků hledání nějakým způsobem začleňuje.
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 Obsah, který se mapuje na ContentPlaceHolder stránky předlohy head
. 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, head
že ContentPlaceHolder není v těle stránky HTML, kód přidaný do ovládacího prvku Obsah 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 značky zadané v ovládacím prvku Obsah.
Chvíli si udělejte přidání <meta>
prvků popisu do About.aspx
, MultipleContentPlaceHolders.aspx
a Login.aspx
.
Přidávání značek do<head>
oblasti prostřednictvím kódu programu
ContentPlaceHolder head
nám umožňuje deklarativně přidat vlastní značky do oblasti stránky předlohy <head>
. Vlastní revize je možné přidat také prostřednictvím kódu programu. Vzpomeňte si Page
Header
, že vlastnost třídy 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á se to načítá 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 Controls
kolekce, například takto:
' Programmatically add a <meta> element to the Header
Dim keywords As 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 s oddělovači. Všimněte si, že pokud chcete přidat <meta>
značku, vytvoříte HtmlMeta
instanci, nastavíte její Name
vlastnosti a Content
vlastnosti a pak ji přidáte do Header
Controls
kolekce . Podobně pokud chcete přidat prvek prostřednictvím kódu <link>
programu, vytvořte HtmlLink
objekt, nastavte jeho vlastnosti a pak ho Header
Controls
přidejte do kolekce .
Poznámka
Pokud chcete přidat libovolné značky, 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 oblastí 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. Ovládací prvek ContentPlaceHolder umožňuje deklarativní přidání vlastních značek do oddílu <head>
prostřednictvím ovládacího prvku Obsah.
Šťastné 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. Navigace na webu net
- 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 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ími recenzenty pro tento kurz byli Zack Jones a Suchi Banerjee. Chcete si projít moje nadcházející články na WEBU MSDN? Pokud ano, dejte mi čáru na mitchell@4GuysFromRolla.comadresu .