Ana Sayfada Başlık, Meta Etiketler ve Diğer HTML Üst Bilgilerini Belirtme (C#)Specifying the Title, Meta Tags, and Other HTML Headers in the Master Page (C#)

Scott Mitchell tarafındanby Scott Mitchell

Kodu indirin veya PDF 'yi indirinDownload Code or Download PDF

, İçerik sayfasından ana sayfada assıralanmış <Head> öğelerini tanımlamaya yönelik farklı tekniklere bakar.Looks at different techniques for defining assorted <head> elements in the Master Page from the content page.

GirişIntroduction

Visual Studio 2008 ' de oluşturulan yeni ana sayfalar, varsayılan olarak iki ContentPlaceHolder denetimine sahiptir: bir adlandırılmış baş ve <head> öğesinde bulunur; ve bir adlandırılmış ContentPlaceHolder1, Web formu içine yerleştirilmiş.New master pages created in Visual Studio 2008 have, by default, two ContentPlaceHolder controls: one named head, and located in the <head> element; and one named ContentPlaceHolder1, placed within the Web Form. ContentPlaceHolder1 amacı, Web formunda sayfa temelinde özelleştirilebilecek bir bölge tanımlamaktır.The purpose of ContentPlaceHolder1 is to define a region in the Web Form that can be customized on a page-by-page basis. ContentPlaceHolder head, sayfaların <head> bölümüne özel içerik eklemesini sağlar.The head ContentPlaceHolder enables pages to add custom content to the <head> section. (Kuşkusuz, bu iki Içerik yer tutucusu değiştirilebilir veya kaldırılabilir ve ana sayfaya ek ContentPlaceHolder eklenebilir.(Of course, these two ContentPlaceHolders can be modified or removed, and additional ContentPlaceHolder may be added to the master page. Site.masterana sayfamız Şu anda dört ContentPlaceHolder denetimine sahip.)Our master page, Site.master, currently has four ContentPlaceHolder controls.)

HTML <head> öğesi, belgenin kendisinin parçası olmayan Web sayfası belgesiyle ilgili bilgiler için bir depo görevi görür.The HTML <head> element serves as a repository for information about the web page document that is not part of the document itself. Bu, Web sayfası başlığı, arama motorları veya iç gezginler tarafından kullanılan meta bilgiler ve RSS akışları, JavaScript ve CSS dosyaları gibi dış kaynakların bağlantıları gibi bilgileri içerir.This includes information such as the web page's title, meta-information used by search engines or internal crawlers, and links to external resources, such as RSS feeds, JavaScript, and CSS files. Bu bilgilerden bazıları Web sitesindeki tüm sayfalarla ilgili olabilir.Some of this information may be pertinent to all pages in the website. Örneğin, her ASP.NET sayfası için aynı CSS kurallarını ve JavaScript dosyalarını Global olarak içeri aktarmak isteyebilirsiniz.For example, you might want to globally import the same CSS rules and JavaScript files for every ASP.NET page. Ancak, sayfaya özgü <head> öğesinin bölümleri vardır.However, there are portions of the <head> element that are page-specific. Sayfa başlığı ana bir örnektir.The page title is a prime example.

Bu öğreticide, ana sayfada ve onun içerik sayfalarında genel ve sayfaya özgü <head> bölümü işaretlemesini nasıl tanımlayacağınızı inceleyeceğiz.In this tutorial we examine how to define global and page-specific <head> section markup in the master page and in its content pages.

Ana sayfanın<head>bölümü inceleniyorExamining the Master Page's<head>Section

Visual Studio 2008 tarafından oluşturulan varsayılan ana sayfa dosyası <head> bölümünde aşağıdaki biçimlendirmeyi içerir:The default master page file created by Visual Studio 2008 contains the following markup in its <head> section:

<head runat="server">
 <title>Untitled Page</title>
 <asp:ContentPlaceHolder id="head" runat="server">
 </asp:ContentPlaceHolder>
</head>

<head> öğesinin, bir sunucu denetimi olduğunu (statik HTML yerine) belirten bir runat="server" özniteliği içerdiğine dikkat edin.Notice that the <head> element contains a runat="server" attribute, which indicates that it is a server control (rather than static HTML). Tüm ASP.NET sayfaları, System.Web.UI ad alanında bulunan Page sınıfındantüretilir.All ASP.NET pages derive from the Page class, which is located in the System.Web.UI namespace. Bu sınıf, sayfanın <head> bölgesine erişim sağlayan bir Header özelliği içerir.This class contains a Header property that provides access to the page's <head> region. Header özelliğini kullanarak, bir ASP.net sayfanın başlığını ayarlayabilir veya işlenmiş <head> bölümüne ek biçimlendirme ekleyebilirsiniz.Using the Header property we can set an ASP.NET page's title or add additional markup to the rendered <head> section. Daha sonra, sayfanın Page_Load olay işleyicisine bir kod yazarak bir içerik sayfasının <head> öğesini özelleştirmek mümkündür.It is possible, then, to customize a content page's <head> element by writing a bit of code in the page's Page_Load event handler. Adım 1 ' de sayfanın başlığını programlı olarak ayarlamayı inceleyeceğiz.We examine how to programmatically set the page's title in Step 1.

Yukarıdaki <head> öğesinde gösterilen biçimlendirme baş adlı bir ContentPlaceHolder denetimi de içerir.The markup shown in the <head> element above also includes a ContentPlaceHolder control named head. İçerik sayfaları program aracılığıyla <head> öğesine özel içerik ekleye, bu ContentPlaceHolder denetimi gerekli değildir.This ContentPlaceHolder control is not necessary, as content pages can add custom content to the <head> element programmatically. Ancak, bir içerik sayfasının <head> öğesine statik biçimlendirme eklemesi gereken durumlarda, statik biçimlendirme, programlı olarak değil, karşılık gelen Içerik denetimine bildirimli olarak eklenebildiği durumlarda faydalıdır.It's useful, however, in situations where a content page needs to add static markup to the <head> element as the static markup can be added declaratively to the corresponding Content control rather than programmatically.

<title> öğesine ve baş ContentPlaceHolder 'a ek olarak, ana sayfanın <head> öğesi tüm sayfalarda ortak olan <head>düzeyinde biçimlendirme içermelidir.In addition to the <title> element and head ContentPlaceHolder, the master page's <head> element should contain any <head>-level markup that's common to all pages. Web sitemizden tüm sayfalar Styles.css dosyasında tanımlanan CSS kurallarını kullanır.In our website, all pages use the CSS rules defined in the Styles.css file. Sonuç olarak, ana sayfalar Ile site genelinde düzen oluşturma öğreticisindeki <head> öğesini, karşılık gelen bir <link> öğesini içerecek şekilde güncelleştirdik.Consequently, we updated the <head> element in the Creating a Site-Wide Layout with Master Pages tutorial to include a corresponding <link> element. Site.master ana sayfanın geçerli <head> biçimlendirmesi aşağıda gösterilmektedir.Our Site.master master page's current <head> markup is shown below.

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

1. Adım: Içerik sayfasının başlığını ayarlamaStep 1: Setting a Content Page's Title

Web sayfasının başlığı <title> öğesi ile belirtilir.The web page's title is specified via the <title> element. Her bir sayfanın başlığını uygun bir değere ayarlamanız önemlidir.It is important to set each page's title to an appropriate value. Bir sayfa ziyaret edildiğinde, başlığı tarayıcının başlık çubuğunda görüntülenir.When visiting a page, its title is displayed in the browser's Title bar. Buna ek olarak, bir sayfanın işaretini kaldırdığınızda, tarayıcılar sayfanın başlığını yer işareti için önerilen ad olarak kullanır.Additionally, when bookmarking a page, browsers use the page's title as the suggested name for the bookmark. Ayrıca, birçok arama altyapısı, arama sonuçlarını görüntülerken sayfanın başlığını gösterir.Also, many search engines show the page's title when displaying search results.

Note

Varsayılan olarak, Visual Studio ana sayfadaki <title> öğesini "Başlıksız sayfa" olarak ayarlar.By default, Visual Studio sets the <title> element in the master page to "Untitled Page". Benzer şekilde, yeni ASP.NET sayfaları, <title> "Başlıksız sayfa" olarak ayarlanmıştır.Similarly, new ASP.NET pages have their <title> set to "Untitled Page", too. Sayfanın başlığını uygun bir değere ayarlamayı kolayca unutabileceğinden, Internet üzerinde "Başlıksız sayfa" başlıklı birçok sayfa vardır.Because it can be easy to forget to set the page's title to an appropriate value, there are many pages on the Internet with the title "Untitled Page". Bu başlıkla Google for Web sayfalarını aramak kabaca 2.460.000 sonuç döndürüyor.Searching Google for web pages with this title returns roughly 2,460,000 results. Microsoft, "adsız sayfa" başlıklı web sayfalarını yayımlamaya açıktır.Even Microsoft is susceptible to publishing web pages with the title "Untitled Page". Bu yazma sırasında, bir Google Search, Microsoft.com etki alanında 236 Web sayfası raporladı.At the time of this writing, a Google search reported 236 such web pages in the Microsoft.com domain.

Bir ASP.NET sayfası başlığını aşağıdaki yollarla belirtebilir:An ASP.NET page can specify its title in one of the following ways:

  • Değeri doğrudan <title> öğesi içine yerleştirerekBy placing the value directly within the <title> element
  • <%@ Page %> yönergesinde Title özniteliğini kullanmaUsing the Title attribute in the <%@ Page %> directive
  • Page.Title="title" veya Page.Header.Title="title"gibi bir kod kullanarak sayfanın Title özelliğini programlı olarak ayarlama.Programmatically setting the page's Title property using code like Page.Title="title" or Page.Header.Title="title".

İçerik sayfalarında, ana sayfada tanımlandığı gibi <title> öğesi yoktur.Content pages don't have a <title> element, as it's defined in the master page. Bu nedenle, bir içerik sayfasının başlığını ayarlamak için <%@ Page %> yönergesinin Title özniteliğini kullanabilir ya da programlı bir şekilde ayarlayabilirsiniz.Therefore, to set a content page's title you can either use the <%@ Page %> directive's Title attribute or set it programmatically.

Sayfanın başlığını bildirimli olarak ayarlamaSetting the Page's Title Declaratively

Bir içerik sayfasının başlığı, <%@ Page %> yönergesininTitle özniteliği aracılığıyla bildirimli olarak ayarlanabilir.A content page's title can be set declaratively through the Title attribute of the <%@ Page %> directive. Bu özellik, <%@ Page %> yönergesinin doğrudan değiştirilerek veya Özellikler penceresi aracılığıyla ayarlanabilir.This property can be set by directly modifying the <%@ Page %> directive or through the Properties window. Her iki yaklaşımdan de bakalım.Let's look at both approaches.

Kaynak görünümünden, sayfanın bildirim temelli biçimlendirmesinin en üstünde bulunan <%@ Page %> yönergesini bulun.From the Source view, locate the <%@ Page %> directive, which is at the top of the page's declarative markup. Default.aspx için <%@ Page %> yönergesi aşağıdadır:The <%@ Page %> directive for Default.aspx follows:

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>

<%@ Page %> yönergesi, sayfayı ayrıştırırken ve derlerken ASP.NET altyapısının kullandığı sayfaya özgü öznitelikleri belirtir.The <%@ Page %> directive specifies page-specific attributes used by the ASP.NET engine when parsing and compiling the page. Bu, ana sayfa dosyasını, kod dosyasının konumunu ve başlığını diğer bilgiler arasında içerir.This includes its master page file, the location of its code file, and its title, among other information.

Varsayılan olarak, yeni bir içerik sayfası oluştururken Visual Studio Title özniteliğini başlıksız sayfa olarak ayarlar.By default, when creating a new content page Visual Studio sets the Title attribute to Untitled Page. Default.aspx"adsız sayfa" Title özniteliğini "Ana sayfa öğreticileri" olarak değiştirin ve ardından sayfayı bir tarayıcı üzerinden görüntüleyin.Change Default.aspx's Title attribute from "Untitled Page" to "Master Page Tutorials" and then view the page through a browser. Şekil 1 ' de, yeni sayfa başlığını yansıtan tarayıcının başlık çubuğu gösterilmektedir.Figure 1 shows the browser's Title bar, which reflects the new page title.

Tarayıcının başlık çubuğunda artık "başlıksız sayfa yerine "ana sayfa öğreticileri" gösteriliyor"

Şekil 01: tarayıcının başlık çubuğu artık "Başlıksız sayfa" yerine "Ana sayfa öğreticileri" gösteriyorFigure 01: The Browser's Title Bar Now Shows "Master Page Tutorials" Instead of "Untitled Page"

Sayfanın başlığı Özellikler penceresi de ayarlanabilir.The page's title may also be set from the Properties window. Özellikler penceresi, Title özelliğini içeren sayfa düzeyi özelliklerini yüklemek için, açılan listeden belge ' yi seçin.From the Properties window, select DOCUMENT from the drop-down list to load the page-level properties, which includes the Title property. Şekil 2 ' de, Title "Ana sayfa öğreticileri" olarak ayarlandıktan sonra Özellikler penceresi gösterilmektedir.Figure 2 shows the Properties window after Title has been set to "Master Page Tutorials".

Başlığı Özellikler penceresinden de yapılandırabilirsiniz

Şekil 02: başlığı Özellikler penceresinden, aynı şekilde yapılandırabilirsinizFigure 02: You May Configure the Title from the Properties Window, Too

Sayfanın başlığını programlama yoluyla ayarlamaSetting the Page's Title Programmatically

Ana sayfanın <head runat="server"> biçimlendirmesi, sayfa ASP.NET altyapısı tarafından işlendiğinde bir HtmlHead sınıf örneğine çevrilir.The master page's <head runat="server"> markup is translated into an HtmlHead class instance when the page is rendered by the ASP.NET engine. HtmlHead sınıfı, değeri işlenmiş <title> öğesinde yansıtılan bir Title özelliğine sahiptir.The HtmlHead class has a Title property whose value is reflected in the rendered <title> element. Bu özelliğe, Page.Header.Titlearacılığıyla bir ASP.NET sayfasının arka plan kod sınıfından erişilebilir; Ayrıca, bu özelliğe Page.Titlearacılığıyla erişilebilir.This property is accessible from an ASP.NET page's code-behind class via Page.Header.Title; this same property can also be accessed via Page.Title.

Sayfanın başlığını programlı bir şekilde ayarlamak için About.aspx sayfanın arka plan kod sınıfına gidin ve sayfanın Load olayı için bir olay işleyicisi oluşturun.To practice setting the page's title programmatically, navigate to the About.aspx page's code-behind class and create an event handler for the page's Load event. Sonra, sayfanın başlığını "Ana sayfa öğreticileri:: about:: date" olarak ayarlayın, burada Tarih geçerli tarihtir.Next, set the page's title to "Master Page Tutorials :: About :: date", where date is the current date. Bu kodu ekledikten sonra Page_Load olay işleyiciniz şuna benzer şekilde görünmelidir:After adding this code your Page_Load event handler should look similar to the following:

protected void Page_Load(object sender, EventArgs e)
{
    Page.Title = string.Format("Master Page Tutorials :: About :: {0:d}", DateTime.Now);
}

Şekil 3 About.aspx sayfasını ziyaret ederken tarayıcının başlık çubuğunu gösterir.Figure 3 shows the browser's title bar when visiting the About.aspx page.

Sayfanın başlığı programlı olarak ayarlanır ve geçerli tarihi Içerir

Şekil 03: sayfanın başlığı programlı olarak ayarlanır ve geçerli tarihi içerirFigure 03: The Page's Title is Programmatically Set and Includes the Current Date

2. Adım: otomatik olarak sayfa başlığı atamaStep 2: Automatically Assigning a Page Title

1. adımda gördüğünüz gibi, sayfanın başlığı bildirimli olarak veya program aracılığıyla ayarlanabilir.As we saw in Step 1, a page's title can be set declaratively or programmatically. Ancak başlığı daha açıklayıcı bir şekilde değiştirmeyi unutursanız, sayfanız "adsız sayfa" varsayılan başlığına sahip olur.If you forget to explicitly change the title to something more descriptive, however, your page will have the default title, "Untitled Page". İdeal olarak, kendi değerini açıkça belirttiğimiz olayda, sayfanın başlığı bizim için otomatik olarak ayarlanır.Ideally, the page's title would be set automatically for us in the event that we don't explicitly specify its value. Örneğin, çalışma zamanında sayfanın başlığı "Başlıksız sayfa" ise, başlığın otomatik olarak ASP.NET sayfasının dosya adıyla aynı olması için güncelleştirilmesini isteyebilirsiniz.For example, if at runtime the page's title is "Untitled Page", we might want to have the title automatically updated to be the same as the ASP.NET page's filename. İyi haber, büyük bir ön çalışmadır. Bu, başlığın otomatik olarak atanmasını olanaklı hale gelir.The good news is that with a little bit of upfront work it is possible to have the title automatically assigned.

Tüm ASP.NET Web sayfaları, System.Web.UI ad alanındaki Page sınıfından türetilir.All ASP.NET web pages derive from the Page class in the System.Web.UI namespace. Page sınıfı, bir ASP.NET sayfası için gereken en düşük işlevselliği tanımlar ve IsPostBack, IsValid, Requestve Responsegibi önemli özellikleri birçok başka konuda gösterir.The Page class defines the minimal functionality needed by an ASP.NET page and exposes essential properties like IsPostBack, IsValid, Request, and Response, among many others. Bir Web uygulamasındaki her sayfa için ek özellikler veya işlevler gerekir.Oftentimes, every page in a web application requires additional features or functionality. Bunu sağlamanın yaygın bir yolu, özel bir temel sayfa sınıfı oluşturmaktır.A common way of providing this is to create a custom base page class. Özel bir temel sayfa sınıfı, Page sınıfından türeten ve ek işlevler içeren oluşturduğunuz bir sınıftır.A custom base page class is a class you create that derives from the Page class and includes additional functionality. Bu temel sınıf oluşturulduktan sonra, ASP.NET sayfalarınızın (Page sınıfı değil) ondan türemesini sağlayabilirsiniz ve böylece ASP.NET sayfalarınıza genişletilmiş işlevler sunar.Once this base class has been created, you can have your ASP.NET pages derive from it (rather than the Page class), thereby offering the extended functionality to your ASP.NET pages.

Bu adımda, başlık başka bir şekilde ayarlanmamışsa, sayfanın başlığını otomatik olarak ASP.NET sayfasının dosya adına ayarlayan bir temel sayfa oluşturuyoruz.In this step we create a base page that automatically sets the page's title to the ASP.NET page's filename if the title has not otherwise been explicitly set. 3. adım, site haritasını temel alan sayfanın başlığını ayarlamaya bakar.Step 3 looks at setting the page's title based on the site map.

Note

Özel temel sayfa sınıfları oluşturma ve kullanma hakkında kapsamlı bir inceleme, bu öğretici serisinin kapsamı dışındadır.A thorough examination of creating and using custom base page classes is beyond the scope of this tutorial series. Daha fazla bilgi için, ASP.net sayfalarınızın arka plan kod sınıfları Için özel bir temel sınıf kullanarakokuyun.For more information, read Using a Custom Base Class for Your ASP.NET Pages' Code-Behind Classes.

Taban sayfası sınıfını oluşturmaCreating the Base Page Class

İlk göreviniz, Page sınıfını genişleten bir sınıf olan temel sayfa sınıfı oluşturmaktır.Our first task is to create a base page class, which is a class that extends the Page class. Çözüm Gezgini proje adına sağ tıklayıp, ASP.NET klasörü Ekle ' yi seçip App_Code' yı seçerek projenize bir App_Code klasörü ekleyerek başlayın.Start by adding an App_Code folder to your project by right-clicking on the project name in the Solution Explorer, choosing Add ASP.NET Folder, and then selecting App_Code. Sonra App_Code klasörüne sağ tıklayın ve BasePage.csadlı yeni bir sınıf ekleyin.Next, right-click on the App_Code folder and add a new class named BasePage.cs. Şekil 4 ' te, App_Code klasörden sonra Çözüm Gezgini gösterilmektedir ve BasePage.cs sınıfı eklendikten sonra.Figure 4 shows the Solution Explorer after the App_Code folder and BasePage.cs class have been added.

App_Code klasörü ve BasePage adlı bir sınıf ekleyin

Şekil 04: App_Code klasörü ve BasePage adlı bir sınıf eklemeFigure 04: Add an App_Code Folder and a Class Named BasePage

Note

Visual Studio, iki proje yönetimi modunu destekler: Web sitesi projeleri ve Web uygulaması projeleri.Visual Studio supports two modes of project management: Web Site Projects and Web Application Projects. App_Code klasörü, Web sitesi proje modeliyle kullanılmak üzere tasarlanmıştır.The App_Code folder is designed to be used with the Web Site Project model. Web uygulaması proje modeli kullanıyorsanız, BasePage.cs sınıfını Classesgibi App_Codedışında bir klasöre yerleştirin.If you are using the Web Application Project model, place the BasePage.cs class in a folder named something other than App_Code, such as Classes. Bu konu hakkında daha fazla bilgi için Web sitesi projesini bir Web uygulaması projesine geçirmekonusuna bakın.For more information on this topic, refer to Migrating a Web Site Project to a Web Application Project.

Özel temel sayfa, ASP.NET Pages 'in arka plan kod sınıfları için temel sınıf görevi görbildiğinden, Page sınıfını genişlemelidir.Because the custom base page serves as the base class for ASP.NET pages' code-behind classes, it needs to extend the Page class.

public class BasePage : System.Web.UI.Page
{

}

Bir ASP.NET sayfası istendiğinde, istenen sayfada HTML olarak işlenmekte olan bir dizi aşamadan geçer.Whenever an ASP.NET page is requested it proceeds through a series of stages, culminating in the requested page being rendered into HTML. Page sınıfının OnEvent yöntemini geçersiz kılarak bir aşamaya dokunabilirsiniz.We can tap into a stage by overriding the Page class's OnEvent method. Taban sayfamız için, LoadComplete aşaması tarafından açıkça belirtilmemişse, başlığı otomatik olarak ayarlayalim (tahmin ettiğiniz gibi, Load aşamasından sonra gerçekleşir).For our base page let's automatically set the title if it has not been explicitly specified by the LoadComplete stage (which, as you might have guessed, occurs after the Load stage).

Bunu gerçekleştirmek için OnLoadComplete yöntemini geçersiz kılın ve aşağıdaki kodu girin:To accomplish this, override the OnLoadComplete method and enter the following code:

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

OnLoadComplete yöntemi, Title özelliğinin henüz açık olarak belirlenmediğini belirleyerek başlar.The OnLoadComplete method starts by determining if the Title property has not yet been explicitly set. Title Özellik null, boş bir dize veya "Başlıksız sayfa" değerine sahipse, istenen ASP.NET sayfasının dosya adına atanır.If the Title property is null, an empty string, or has the value "Untitled Page", it is assigned to the filename of the requested ASP.NET page. İstenen ASP.NET sayfasının fiziksel yoluna C:\MySites\Tutorial03\Login.aspx, örneğin, Request.PhysicalPath özelliği aracılığıyla erişilebilir.The physical path to the requested ASP.NET page - C:\MySites\Tutorial03\Login.aspx, for example - is accessible via the Request.PhysicalPath property. Path.GetFileNameWithoutExtension yöntemi, yalnızca dosya adı bölümünü çekmek için kullanılır ve bu dosya adı daha sonra Page.Title özelliğine atanır.The Path.GetFileNameWithoutExtension method is used to pull out just the filename portion, and this filename is then assigned to the Page.Title property.

Note

Başlık biçimini iyileştirmek için sizi bu mantığı geliştirmeye davet ediyorum.I invite you to enhance this logic to improve the format of the title. Örneğin, sayfanın dosya adı Company-Products.aspx, yukarıdaki kod "şirket-ürünler" başlığını oluşturur, ancak "Şirket ürünleri" içinde olduğu gibi Dash bir boşluk ile yerine geçer.For example, if the page's filename is Company-Products.aspx, the above code will produce the title "Company-Products", but ideally the dash would be replaced with a space, as in "Company Products". Ayrıca, bir durum değişikliği olduğunda bir boşluk eklemeyi göz önünde bulundurun.Also, consider adding a space whenever there's a case change. Diğer bir deyişle, dosya adını OurBusinessHours.aspx dönüştüren kodu bir "Iş saatlerimiz" başlığına eklemeyi göz önünde bulundurun.That is, consider adding code that transforms the filename OurBusinessHours.aspx to a title of "Our Business Hours".

Içerik sayfalarının temel sayfa sınıfını devralmasınıHaving the Content Pages Inherit the Base Page Class

Artık Page sınıfı yerine özel temel sayfadan (BasePage) türetmek için sitemizdeki ASP.NET sayfalarını güncelleştirmeniz gerekiyor.We now need to update the ASP.NET pages in our site to derive from the custom base page (BasePage) instead of the Page class. Bunu gerçekleştirmek için, her bir arka plan kod sınıfına gidin ve sınıf bildirimini öğesinden değiştirin:To accomplish this go to each code-behind class and change the class declaration from:

public partial class ClassName : System.Web.UI.Page

Hedef:To:

public partial class ClassName : BasePage

Bunu yaptıktan sonra, bir tarayıcı aracılığıyla siteyi ziyaret edin.After doing so, visit the site through a browser. Default.aspx veya About.aspxgibi başlık açıkça ayarlanmış bir sayfayı ziyaret ederseniz, açıkça belirtilen başlık kullanılır.If you visit a page whose title is explicitly set, such as Default.aspx or About.aspx, the explicitly specified title is used. Ancak, başlığı varsayılan ("Başlıksız sayfa") olan bir sayfayı ziyaret ederseniz, taban sayfası sınıfı başlığı sayfanın dosya adına ayarlar.If, however, you visit a page whose title has not been changed from the default ("Untitled Page"), the base page class sets the title to the page's filename.

Şekil 5 ' te bir tarayıcıdan görüntülendiklerinde MultipleContentPlaceHolders.aspx sayfası gösterilmektedir.Figure 5 shows the MultipleContentPlaceHolders.aspx page when viewed through a browser. Başlığın tam olarak sayfanın dosya adı (uzantı), "Çoğulsuz Contentyertutucuları" şeklinde olduğunu unutmayın.Note that the title is precisely the page's filename (less the extension), "MultipleContentPlaceHolders".

bir başlık açıkça belirtilmemişse, sayfanın dosya adı otomatik olarak kullanılırIf a Title is Not Explicitly Specified, the Page's Filename is Automatically Used

Şekil 05: bir başlık açıkça belirtilmemişse, sayfanın dosya adı otomatik olarak kullanılır (tam boyutlu görüntüyü görüntülemek için tıklatın)Figure 05: If a Title is Not Explicitly Specified, the Page's Filename is Automatically Used (Click to view full-size image)

3. Adım: sayfa başlığını site haritasında temel almaStep 3: Basing the Page Title on the Site Map

ASP.NET, sayfa geliştiricilerinin bir dış kaynakta (bir XML dosyası veya veritabanı tablosu gibi) hiyerarşik bir site haritası tanımlamasına olanak tanıyan sağlam bir site haritası çerçevesi sunar. Bu, site haritası hakkında bilgi görüntülemek için Web denetimleriyle birlikte (örneğin, Menü ve TreeView denetimleri).ASP.NET offers a robust site map framework that enables page developers to define a hierarchical site map in an external resource (such as an XML file or database table) along with Web controls for displaying information about the site map (such as the SiteMapPath, Menu, and TreeView controls).

Site Haritası yapısına, bir ASP.NET sayfasının arka plan kod sınıfından de programlı olarak erişilebilir.The site map structure can also be accessed programmatically from an ASP.NET page's code-behind class. Bu şekilde, sayfanın başlığını site haritasında karşılık gelen düğümün başlığına otomatik olarak ayarlayabiliriz.In this manner we can automatically set a page's title to the title of its corresponding node in the site map. Bu işlevi sunabilmesi için 2. adımda oluşturulan BasePage sınıfını geliştirelim.Let's enhance the BasePage class created in Step 2 so that it offers this functionality. Ancak ilk olarak sitemiz için bir site haritası oluşturmamız gerekiyor.But first we need to create a site map for our site.

Note

Bu öğreticide, okuyucunun zaten ASP 'yi öğrenildiği varsayılmaktadır. NET sitesinin harita özellikleri.This tutorial assumes the reader already is familiar with ASP.NET's site map features. Site haritasını kullanma hakkında daha fazla bilgi için, bkz. çok parçalı makale serime, ASP 'Yi İnceleme. NET 'in site gezintisi.For more information on using the site map, consult my multi-part article series, Examining ASP.NET's Site Navigation.

Site Haritası oluşturmaCreating the Site Map

Site Haritası sistemi, site haritası API 'sini bellek ve kalıcı bir mağaza arasında site haritası bilgilerini serileştiren mantığa bağlayan, Sağlayıcı modeliinşa edilir.The site map system is built atop the provider model, which decouples the site map API from the logic that serializes site map information between memory and a persistent store. .NET Framework, varsayılan site eşleme sağlayıcısı olan XmlSiteMapProvider sınıfıylabirlikte gelir.The .NET Framework ships with the XmlSiteMapProvider class, which is the default site map provider. Adından da anlaşılacağı gibi, XmlSiteMapProvider, site haritası deposu olarak bir XML dosyası kullanır.As its name implies, XmlSiteMapProvider uses an XML file as its site map store. Bu sağlayıcıyı site haritamızı tanımlamak için kullanalım.Let's use this provider for defining our site map.

Web sitesinin Web.sitemapadlı kök klasörde bir site haritası dosyası oluşturarak başlayın.Start by creating a site map file in the website's root folder named Web.sitemap. Bunu gerçekleştirmek için, Çözüm Gezgini Web sitesinin adına sağ tıklayın, yeni öğe Ekle ' yi seçin ve Site Haritası şablonunu seçin.To accomplish this, right-click on the website name in Solution Explorer, choose Add New Item, and select the Site Map template. Dosyanın Web.sitemap olarak adlandırıldığından emin olun ve Ekle ' ye tıklayın.Ensure that the file is named Web.sitemap and click Add.

Web sitesinin kök klasörüne Web. sitemap adlı bir dosya ekleyinAdd a File Named Web.sitemap to the Website's Root Folder

Şekil 06: Web sitesinin kök klasörüne Web.sitemap adlı bir dosya ekleyin (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 06: Add a File Named Web.sitemap to the Website's Root Folder (Click to view full-size image)

Aşağıdaki XML 'i Web.sitemap dosyasına ekleyin:Add the following XML to the Web.sitemap file:

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

Bu XML, Şekil 7 ' de gösterilen hiyerarşik site haritası yapısını tanımlar.This XML defines the hierarchical site map structure shown in Figure 7.

Site Haritası Şu anda üç site haritası düğümünden oluşturulmuş

Şekil 07: site haritası şu anda üç site haritası düğümünden oluşturulmuşFigure 07: The Site Map is Currently Composed of Three Site Map Nodes

Yeni örnekler eklediğimiz için ilerideki öğreticilerde site haritası yapısını güncelleştireceğiz.We will update the site map structure in future tutorials as we add new examples.

Ana sayfayı gezinti Web denetimlerini Içerecek şekilde güncelleştirmeUpdating the Master Page to Include Navigation Web Controls

Artık tanımlanmış bir site haritası olduğuna göre, ana sayfayı gezinti Web denetimlerini içerecek şekilde güncellemenize izin verin.Now that we have a site map defined, let's update the master page to include navigation Web controls. Özellikle, site haritasında tanımlanan her düğüm için liste öğesiyle sıralanmamış bir liste oluşturan dersler bölümünde sol sütuna bir ListView denetimi ekleyelim.Specifically, let's add a ListView control to the left column in the Lessons section that renders an unordered list with a list item for each node defined in the site map.

Note

ListView denetimi ASP.NET sürüm 3,5 ' e yenidir.The ListView control is new to ASP.NET version 3.5. ASP.NET 'in önceki bir sürümünü kullanıyorsanız, bunun yerine Yineleyici denetimini kullanın.If you are using a prior version of ASP.NET, use the Repeater control instead. ListView denetimi hakkında daha fazla bilgi için bkz. ASP.NET 3.5 ListView ve DataPager denetimleri kullanma.For more information on the ListView control, see Using ASP.NET 3.5's ListView and DataPager Controls.

Dersler bölümünden var olan sıralanmamış liste işaretlemesini kaldırarak başlayın.Start by removing the existing unordered list markup from the Lessons section. Sonra, araç kutusu ' ndan bir ListView denetimini sürükleyin ve ders başlığının altına bırakın.Next, drag a ListView control from the Toolbox and drop it beneath the Lessons heading. ListView, diğer görünüm denetimleriyle birlikte araç kutusunun veri bölümünde bulunur: GridView, DetailsView ve FormView.The ListView is located in the Data section of the Toolbox, alongside the other view controls: the GridView, DetailsView, and FormView. ListView 'un ID özelliğini LessonsListolarak ayarlayın.Set the ListView's ID property to LessonsList.

Veri kaynağı yapılandırma sihirbazından ListView öğesini LessonsDataSourceadlı yeni bir SiteMapDataSource denetimine bağlamayı seçin.From the Data Source Configuration Wizard choose to bind the ListView to a new SiteMapDataSource control named LessonsDataSource. SiteMapDataSource denetimi, site haritası sisteminin hiyerarşik yapısını döndürür.The SiteMapDataSource control returns the hierarchical structure from the site map system.

bir SiteMapDataSource denetimini LessonsList ListView Denetimine bağlama Bind a SiteMapDataSource Control to the LessonsList ListView Control

Şekil 08: LessonsList ListView denetimine bir SiteMapDataSource denetimi bağlama (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 08: Bind a SiteMapDataSource Control to the LessonsList ListView Control (Click to view full-size image)

SiteMapDataSource denetimini oluşturduktan sonra, ListView 'un şablonlarını, SiteMapDataSource denetimi tarafından döndürülen her düğüm için bir liste öğesiyle birlikte sıralanmamış bir liste oluşturmak üzere tanımlamamız gerekir.After creating the SiteMapDataSource control, we need to define the ListView's templates so that it renders an unordered list with a list item for each node returned by the SiteMapDataSource control. Bu, aşağıdaki şablon işaretlemesi kullanılarak gerçekleştirilebilir:This can be accomplished using the following template markup:

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

LayoutTemplate, SiteMapDataSource tarafından döndürülen her öğeyi belirli bir dersin bağlantısını içeren bir liste öğesi (<li>) olarak işlerken ItemTemplate, sıralanmamış bir liste için (<ul>...</ul>) biçimlendirme üretir.The LayoutTemplate generates the markup for an unordered list (<ul>...</ul>) while the ItemTemplate renders each item returned by the SiteMapDataSource as a list item (<li>) that contains a link to the particular lesson.

ListView şablonlarını yapılandırdıktan sonra, Web sitesini ziyaret edin.After configuring the ListView's templates, visit the website. Şekil 9 ' da gösterildiği gibi dersler bölümü, ana öğe içeren tek bir madde işaretli öğesi içerir.As Figure 9 shows, the Lessons section contains a single bulleted item, Home. , Yaklaşık ve birden çok ContentPlaceHolder denetim dersi kullanıyor?Where are the About and Using Multiple ContentPlaceHolder Controls lessons? SiteMapDataSource, hiyerarşik bir veri kümesi döndürmek için tasarlanmıştır, ancak ListView denetimi yalnızca hiyerarşinin tek bir düzeyini görüntüleyebilir.The SiteMapDataSource is designed to return a hierarchical set of data, but the ListView control can only display a single level of the hierarchy. Sonuç olarak, yalnızca SiteMapDataSource tarafından döndürülen ilk site haritası düğümü düzeyi görüntülenir.Consequently, only the first level of site map nodes returned by the SiteMapDataSource is displayed.

Dersler bölümü tek bir liste öğesi Içerir The Lessons Section Contains a Single List Item

Şekil 09: dersler bölümü tek bir liste öğesi içerir (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 09: The Lessons Section Contains a Single List Item (Click to view full-size image)

Birden çok düzeyi göstermek için ItemTemplateiçinde birden çok ListViews iç içe geçirebiliriz.To display multiple levels we could nest multiple ListViews within the ItemTemplate. Bu teknik, veri öğreticisi serisi Ile çalışmamın ana sayfalarında ve site gezinti öğreticisinde incelendi.This technique was examined in the Master Pages and Site Navigation tutorial of my Working with Data tutorial series. Ancak, bu öğretici serisi için site haritamız yalnızca iki düzey içerir: giriş (en üst düzey); ve her ders evin bir alt öğesi.However, for this tutorial series our site map will contain just a two levels: Home (the top level); and each lesson as a child of Home. İç içe geçmiş bir ListView yapmak yerine, ShowStartingNode özelliğini falseolarak ayarlayarak SiteMapDataSource 'un başlangıç düğümünü döndürmamasını isteyebilirsiniz.Rather than crafting a nested ListView, we can instead instruct the SiteMapDataSource to not return the starting node by setting its ShowStartingNode property to false. Net etkisi, site haritası düğümlerinin ikinci katmanını döndürerek SiteMapDataSource 'un başlattığı bir sonucudur.The net effect is that the SiteMapDataSource starts by returning the second tier of site map nodes.

Bu değişiklik ile, ListView hakkında, ve birden çok ContentPlaceHolder denetim dersi kullanarak, ancak giriş için bir madde işareti öğesi atlar.With this change, the ListView displays bullet items for the About and Using Multiple ContentPlaceHolder Controls lessons, but omits a bullet item for Home. Bu sorunu gidermek için, LayoutTemplategiriş için açıkça bir madde işareti öğesi ekleyebiliriz:To remedy this, we can explicitly add a bullet item for Home in the LayoutTemplate:

<LayoutTemplate>
 <ul>
 <li><asp:HyperLink runat="server" ID="lnkLesson"
 NavigateUrl="~/Default.aspx" Text="Home" /></li>
 <asp:PlaceHolder runat="server" ID="itemPlaceholder" />
 </ul>
</LayoutTemplate>

SiteMapDataSource 'u başlangıç düğümünü atlamak ve açıkça bir giriş madde işareti öğesi eklemek üzere yapılandırarak, dersler bölümü artık amaçlanan çıktıyı görüntüler.By configuring the SiteMapDataSource to omit the starting node and explicitly adding a Home bullet item, the Lessons section now displays the intended output.

Dersler bölümü, giriş ve her alt düğüm için bir madde Işareti öğesi Içerir The Lessons Section Contains a Bullet Item for Home and Each Child Node

Şekil 10: dersler bölümü, giriş ve her alt düğüm Için bir madde Işareti öğesi içerir (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 10: The Lessons Section Contains a Bullet Item for Home and Each Child Node (Click to view full-size image)

Site Haritası temelinde başlık ayarlamaSetting the Title Based on the Site Map

Site Haritası ile, site haritasında belirtilen başlığı kullanmak için BasePage sınıfınızı güncelleştirebiliriz.With the site map in place, we can update our BasePage class to use the title specified in the site map. 2. adımda, sayfanın başlığı sayfa geliştiricisi tarafından açıkça ayarlanmamışsa, yalnızca site haritası düğümünün başlığını kullanmak istiyoruz.As we did in Step 2, we only want to use the site map node's title if the page's title has not been explicitly set by the page developer. İstenen sayfada açıkça ayarlanmış bir sayfa başlığı yoksa ve site haritasında bulunamazsa, adım 2 ' de yaptığımız gibi, istenen sayfanın dosya adını (uzantıyı azaltır) kullanmaya geri döneceğiz.If the page being requested does not have an explicitly set page title and is not found in the site map, then we'll fall back to using the requested page's filename (less the extension), as we did in Step 2. Şekil 11 ' de bu karar süreci gösterilmektedir.Figure 11 illustrates this decision process.

Açıkça ayarlanmış bir sayfa başlığı yokluğunda, karşılık gelen site haritası düğümünün başlığı kullanılır

Şekil 11: açıkça ayarlanmış bir sayfa başlığı yokluğunda, karşılık gelen site haritası düğümünün başlığı kullanılırFigure 11: In the Absence of an Explicitly Set Page Title, the Corresponding Site Map Node's Title is Used

BasePage sınıfının OnLoadComplete yöntemini aşağıdaki kodu içerecek şekilde güncelleştirin:Update the BasePage class's OnLoadComplete method to include the following code:

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

Daha önce olduğu gibi OnLoadComplete yöntemi, sayfanın başlığının açıkça ayarlanmış olup olmadığını belirleyerek başlar.As before, the OnLoadComplete method starts by determining whether the page's title has been explicitly set. Page.Title null, boş bir dize veya "Başlıksız sayfa" değeri atanmışsa, kod otomatik olarak Page.Titlebir değer atar.If Page.Title is null, an empty string, or is assigned the value "Untitled Page" then the code automatically assigns a value to Page.Title.

Kullanılacak başlığı öğrenmek için, kod SiteMap sınıfının CurrentNode özelliğinebaşvurarak başlatılır.To determine the title to use, the code starts by referencing the SiteMap class's CurrentNode property. CurrentNode, site haritasında istenen sayfaya karşılık gelen SiteMapNode örneğini döndürür.CurrentNode returns the SiteMapNode instance in the site map that corresponds to the currently requested page. O sırada istenen sayfanın site haritasında bulunduğu varsayıldığında, SiteMapNode``Title özelliği sayfanın başlığına atanır.Assuming the currently requested page is found within the site map, the SiteMapNode's Title property is assigned to the page's title. Şu anda istenen sayfa site haritasında yoksa, CurrentNode null döndürür ve istenen sayfanın dosya adı başlık olarak kullanılır (adım 2 ' de yapıldığı gibi).If the currently requested page is not in the site map, CurrentNode returns null and the requested page's filename is used as the title (as was done in Step 2).

Şekil 12 ' de bir tarayıcıdan görüntülendiklerinde MultipleContentPlaceHolders.aspx sayfası gösterilmektedir.Figure 12 shows the MultipleContentPlaceHolders.aspx page when viewed through a browser. Bu sayfanın başlığı açıkça ayarlanmadığından, bunun yerine karşılık gelen site haritası düğümünün başlığı kullanılır.Because this page's title is not explicitly set, its corresponding site map node's title is used instead.

Çoğulcontentyertutucuları. aspx sayfasının başlığı site eşlemesinden çekilir

Şekil 12: MultipleContentPlaceHolders.aspx sayfasının başlığı site eşlemesinden çekilirFigure 12: The MultipleContentPlaceHolders.aspx Page's Title is Pulled from the Site Map

4. Adım:<head>bölümüne sayfaya özgü diğer biçimlendirmeleri eklemeStep 4: Adding Other Page-Specific Markup to the<head>Section

Adım 1, 2 ve 3 ' te sayfa temelinde <title> öğesi özelleştiriliyor.Steps 1, 2, and 3 looked at customizing the <title> element on a page-by-page basis. <title>ek olarak, <head> bölümü <meta> öğeleri ve <link> öğeleri içerebilir.In addition to <title>, the <head> section may contain <meta> elements and <link> elements. Bu öğreticide daha önce belirtildiği gibi, Site.master``<head> bölümü Styles.cssiçin bir <link> öğesi içerir.As noted earlier in this tutorial, Site.master's <head> section includes a <link> element to Styles.css. Bu <link> öğesi ana sayfa içinde tanımlandığından, tüm içerik sayfaları için <head> bölümüne dahil edilmiştir.Because this <link> element is defined within the master page, it is included in the <head> section for all content pages. Ancak sayfa temelinde <meta> ve <link> öğeleri ekleme hakkında nasıl gidebiliriz?But how do we go about adding <meta> and <link> elements on a page-by-page basis?

<head> bölümüne sayfaya özgü içerik eklemenin en kolay yolu, ana sayfada bir ContentPlaceHolder denetimi oluşturmaktır.The easiest way to add page-specific content to the <head> section is by creating a ContentPlaceHolder control in the master page. Bu tür bir ContentPlaceHolder (adlandırılmış head) zaten var.We already have such a ContentPlaceHolder (named head). Bu nedenle, özel <head> biçimlendirme eklemek için sayfada ilgili bir Içerik denetimi oluşturun ve işaretlemeyi buraya yerleştirin.Therefore, to add custom <head> markup, create a corresponding Content control in the page and place the markup there.

Sayfaya özel <head> biçimlendirme eklemeyi göstermek için, geçerli içerik sayfası kümesi için bir <meta> açıklama öğesi ekleyelim.To illustrate adding custom <head> markup to a page, let's include a <meta> description element to our current set of content pages. <meta> Description öğesi, Web sayfası hakkında kısa bir açıklama sağlar; çoğu arama altyapısı, arama sonuçlarını görüntülerken bu bilgileri bir biçimde birleştirmekte.The <meta> description element provides a brief description about the web page; most search engines incorporate this information in some form when displaying search results.

<meta> Description öğesi aşağıdaki biçimdedir:A <meta> description element has the following form:

<meta name="description" content="description of the web page" />

Bu biçimlendirmeyi bir içerik sayfasına eklemek için yukarıdaki metni, ana sayfanın baş ContentPlaceHolder öğesine eşlenen Içerik denetimine ekleyin.To add this markup to a content page, add the above text to the Content control that maps to the master page's head ContentPlaceHolder. Örneğin, Default.aspxiçin <meta> açıklama öğesi tanımlamak için aşağıdaki biçimlendirmeyi ekleyin:For example, to define a <meta> description element for Default.aspx, add the following markup:

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
 <meta name="description" content="Welcome to Scott Mitchell's Master Page Tutorials series." />
</asp:Content>

Baş ContentPlaceHolder, HTML sayfasının gövdesinde olmadığından, Içerik denetimine eklenen biçimlendirme Tasarım görünümü gösterilmez.Because the head ContentPlaceHolder is not within the HTML page's body, the markup added to the Content control is not displayed in the Design view. <meta> Description öğesini bir tarayıcıdan Default.aspx ziyaret edin.To see the <meta> description element visit Default.aspx through a browser. Sayfa yüklendikten sonra, kaynağı görüntüleyin ve <head> bölümünün Içerik denetiminde belirtilen biçimlendirmeyi içerdiğini unutmayın.After the page has been loaded, view the source and note that the <head> section includes the markup specified in the Content control.

<meta> Description öğelerini About.aspx, MultipleContentPlaceHolders.aspxve Login.aspxeklemek için bir dakikanızı ayırın.Take a moment to add <meta> description elements to About.aspx, MultipleContentPlaceHolders.aspx, and Login.aspx.

Program aracılığıyla<head>bölgesine biçimlendirme eklemeProgrammatically Adding Markup to the<head>Region

Baş ContentPlaceHolder ana sayfanın <head> bölgesine bildirimli olarak özel biçimlendirme ekleyememize olanak sağlar.The head ContentPlaceHolder allows us to declaratively add custom markup to the master page's <head> region. Özel biçimlendirme de programlı bir şekilde eklenebilir.Custom markup may also be added programmatically. Page sınıfının Header özelliğinin ana sayfada tanımlanan HtmlHead örneğini (<head runat="server">) döndürdüğünü hatırlayın.Recall that the Page class's Header property returns the HtmlHead instance defined in the master page (the <head runat="server">).

<head> bölgesine program aracılığıyla içerik ekleyebilmekte olan içerik dinamik olduğunda faydalıdır.Being able to programmatically add content to the <head> region is useful when the content to add is dynamic. Belki de sayfayı ziyaret eden kullanıcıya dayalıdır; Belki de bir veritabanından çekilmekte olabilir.Perhaps it's based on the user visiting the page; maybe it's being pulled from a database. Nedeninden bağımsız olarak, denetimler koleksiyonuna şöyle bir şekilde denetimler ekleyerek HtmlHead içerik ekleyebilirsiniz:Regardless of the reason, you can add content to the HtmlHead by adding controls to its Controls collection like so:

// 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);

Yukarıdaki kod, sayfayı tanımlayan anahtar sözcüklerin virgülle ayrılmış bir listesini sağlayan <head> bölgesine <meta> Keywords öğesi ekler.The above code adds the <meta> keywords element to the <head> region, which provides a comma-delimited list of keywords that describe the page. Bir <meta> etiketi eklemek için HtmlMeta örneği oluşturup Name ve Content özelliklerini ayarlayıp Header``Controls koleksiyonuna ekleyin.Note that to add a <meta> tag you create an HtmlMeta instance, set its Name and Content properties, and then add it to the Header's Controls collection. Benzer şekilde, programlı olarak bir <link> öğesi eklemek için, bir HtmlLink nesnesi oluşturun, özelliklerini ayarlayın ve ardından Header``Controls koleksiyonuna ekleyin.Similarly, to programmatically add a <link> element, create an HtmlLink object, set its properties, and then add it to the Header's Controls collection.

Note

Rastgele biçimlendirme eklemek için, bir LiteralControl örneği oluşturun, Text özelliğini ayarlayın ve Header``Controls koleksiyonuna ekleyin.To add arbitrary markup, create a LiteralControl instance, set its Text property, and then add it to the Header's Controls collection.

ÖzetSummary

Bu öğreticide, sayfa temelinde <head> bölge biçimlendirmesi eklemenin çeşitli yollarına baktık.In this tutorial we looked at a variety of ways to add <head> region markup on a page-by-page basis. Ana sayfa, ContentPlaceHolder ile bir HtmlHead örneği (<head runat="server">) içermelidir.A master page should include an HtmlHead instance (<head runat="server">) with a ContentPlaceHolder. HtmlHead örneği, içerik sayfalarının <head> bölgesine ve bildirimli olarak erişmesini ve sayfa başlığını programlı olarak ayarlamanızı sağlar; ContentPlaceHolder denetimi, bir Içerik denetimi aracılığıyla <head> bölümüne bildirimli olarak özel biçimlendirme eklenmesini sağlar.The HtmlHead instance allows content pages to programmatically access the <head> region and to declaratively and programmatically set the page's title; the ContentPlaceHolder control enables custom markup to be added to the <head> section declaratively through a Content control.

Programlamanın kutlu olsun!Happy Programming!

Daha Fazla BilgiFurther Reading

Bu öğreticide ele alınan konular hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:For more information on the topics discussed in this tutorial, refer to the following resources:

Yazar hakkındaAbout the Author

Birden çok ASP/ASP. NET Books ve 4GuysFromRolla.com 'in yazarı Scott Mitchell, 1998 sürümünden bu yana Microsoft Web teknolojileriyle birlikte çalışıyor.Scott Mitchell, author of multiple ASP/ASP.NET books and founder of 4GuysFromRolla.com, has been working with Microsoft Web technologies since 1998. Scott bağımsız danışman, Trainer ve yazıcı olarak çalışıyor.Scott works as an independent consultant, trainer, and writer. En son kitabı, 24 saat içinde ASP.NET 3,5 kendi kendinize eğitimister.His latest book is Sams Teach Yourself ASP.NET 3.5 in 24 Hours. Scott 'a mitchell@4GuysFromRolla.com veya blogundan http://ScottOnWriting.NETüzerinden erişilebilir.Scott can be reached at mitchell@4GuysFromRolla.com or via his blog at http://ScottOnWriting.NET.

Özel olarak teşekkürlerSpecial Thanks To

Bu öğretici serisi birçok yararlı gözden geçirenler tarafından incelendi.This tutorial series was reviewed by many helpful reviewers. Bu öğreticiye ilişkin müşteri adayı gözden geçirenler Zack Jones ve suchi Banerjee ' di.Lead reviewers for this tutorial were Zack Jones and Suchi Banerjee. Yaklaşan MSDN makalelerimi gözden geçiriyor musunuz?Interested in reviewing my upcoming MSDN articles? Öyleyse, beni mitchell@4GuysFromRolla.combir satır bırakın.If so, drop me a line at mitchell@4GuysFromRolla.com.