Ana Sayfalardaki URL'ler (C#)URLs in Master Pages (C#)

Scott Mitchell tarafındanby Scott Mitchell

Kodu indirin veya PDF 'yi indirinDownload Code or Download PDF

Ana sayfadaki URL 'Lerin, ana sayfa dosyası içerik sayfasından farklı bir göreli dizinde olması nedeniyle nasıl kesintiye uğrasatığına yöneliktir.Addresses how URLs in the master page can break due to the master page file being in a different relative directory than the content page. Bildirim temelli sözdiziminde ~ ile URL 'Leri yeniden temellendiriliyor ve ResolveUrl ve ResolveClientUrl programlama programlı bir şekilde kullanılıyor.Looks at rebasing URLs via ~ in the declarative syntax and using ResolveUrl and ResolveClientUrl programmatically. (Ayrıca şuna göz atın:(Also look at

GirişIntroduction

Şimdiye kadar görtiğimiz tüm örneklerde, ana ve içerik sayfaları aynı klasörde (Web sitesinin kök klasörü) bulunur.In all the examples we've seen thus far, the master and content pages have been located in the same folder (the website's root folder). Ancak ana ve içerik sayfalarının aynı klasörde olması neden yoktur.But there's no reason why the master and content pages must be in the same folder. Alt klasörlerde kesinlikle içerik sayfaları oluşturabilirsiniz.You can certainly create content pages in subfolders. Benzer şekilde, sitenizin ana sayfalarını yerleştirdiğiniz bir ~/MasterPages/ klasörü oluşturabilirsiniz.Similarly, you might create a ~/MasterPages/ folder where you place your site's master pages.

Farklı klasörlerde ana ve içerik sayfalarının yerleştirilmesi ile ilgili olası bir sorun, bozuk URL 'Ler içerir.One potential issue with placing master and content pages in different folders involves broken URLs. Ana sayfa, köprülerde, resimlerde veya diğer öğelerde göreli URL 'Ler içeriyorsa, farklı bir klasörde bulunan içerik sayfaları için bağlantı geçersiz olur.If the master page contains relative URLs in hyperlinks, images, or other elements, the link will be invalid for content pages that reside in a different folder. Bu öğreticide, bu sorunun kaynağını ve geçici çözümleri inceleyeceğiz.In this tutorial we examine the source of this problem as well as workarounds.

Göreli URL 'lerle ilgili sorunThe Problem with Relative URLs

Web sayfasındaki bir URL, işaret ettiği kaynağın konumu Web sayfasının klasör yapısındaki konumuyla göreli ise göreli BIR URL olarak kabul edilir.A URL on a web page is said to be a relative URL if the location of the resource it points to is relative to the web page's location in the website's folder structure. Önde gelen eğik çizgi (/) veya protokolle (http://gibi) başlamadığı tüm URL 'ler, URL 'YI içeren Web sayfasının konumuna bağlı olarak tarayıcı tarafından çözümlendiği için görelidir.Any URL that does not start with a leading forward slash (/) or a protocol (such as http://) is relative because it is resolved by the browser based on the location of the web page that contains the URL.

Örneğin, Web sitemiz tek bir görüntü dosyası olan bir ~/Images/ klasöre sahiptir PoweredByASPNET.gif.For example, our website has an ~/Images/ folder with a single image file, PoweredByASPNET.gif. Ana sayfa dosyası Site.master, aşağıdaki biçimlendirmeye sahip footerContent bölgesinde bir <img> öğesine sahiptir:The master page file Site.master has an <img> element in the footerContent region with the following markup:

<div id="footerContent">
 <img src="Images/PoweredByASPNET.gif" alt="Powered by ASP.NET!" />
</div>

<img> öğesindeki src özniteliği değeri, / veya http://başlamadığı için göreli bir URL 'dir.The src attribute value in the <img> element is a relative URL because it does not start with / or http://. Kısacası src öznitelik değeri, tarayıcıya PoweredByASPNET.gifadlı bir dosyanın Images alt klasörüne bakmasını söyler.In short, the src attribute value tells the browser to look in the Images subfolder for a file named PoweredByASPNET.gif.

Bir içerik sayfası ziyaret edildiğinde Yukarıdaki biçimlendirme doğrudan tarayıcıya gönderilir.When visiting a content page, the above markup is sent directly to the browser. About.aspx ziyaret edip tarayıcıya gönderilen HTML kaynağını görüntülemek için bir dakikanızı ayırın.Take a moment to visit About.aspx and view the HTML source sent to the browser. Ana sayfada tam olarak aynı biçimlendirmenin tarayıcıya gönderildiğini görürsünüz.You will find that the exact same markup in the master page was sent to the browser.

<div id="footerContent">
 <img src="Images/PoweredByASPNET.gif" alt="Powered by ASP.NET!" />
</div>

İçerik sayfası kök klasördeyse (About.aspxolduğu gibi), kök klasöre göre bir Images alt klasörü olduğundan her şey beklendiği gibi çalışıyor.If the content page is in the root folder (as is About.aspx) everything works as expected because there is an Images subfolder relative to the root folder. Ancak, içerik sayfası ana sayfadan farklı bir klasörken, bu işlemler kesilir.However, things break down if the content page is in a different folder than the master page. Bunu göstermek için Adminadlı bir alt klasör oluşturun.To illustrate this, create a subfolder named Admin. Sonra, Admin klasöre Default.aspx adlı bir içerik sayfası ekleyin ve yeni sayfayı Site.master ana sayfasına bağlamayı unutmayın.Next, add a content page named Default.aspx to the Admin folder, making sure to bind the new page to the Site.master master page.

Note

Ana sayfada başlık, meta etiketler ve DIĞER HTML üst bilgilerini belirtme öğreticisinde, içerik sayfasının başlığını (açıkça atanmamışsa) otomatik olarak ayarlamış BasePage adlı özel bir temel sayfa sınıfı oluşturduk.In the Specifying the Title, Meta Tags, and Other HTML Headers in the Master Page tutorial we created a custom base page class named BasePage that automatically set the content page's title (if it was not explicitly assigned). Yeni oluşturulan sayfanın arka plan kod sınıfının BasePage, bu işlevselliği kullanabilmesi için türemesini unutmayın.Don't forget to have the newly created page's code-behind class derive from BasePage so that it can utilize this functionality.

Bu içerik sayfasını oluşturduktan sonra, Çözüm Gezgini Şekil 1 ' e benzer görünmelidir.After you have created this content page, your Solution Explorer should look similar to Figure 1.

Projeye yeni bir klasör ve ASP.NET sayfası eklendi

Şekil 01: projeye yeni bir klasör ve ASP.NET sayfası eklendiFigure 01: A New Folder and ASP.NET Page Have Been Added to the Project

Sonra, Web.sitemap dosyasını bu ders için yeni bir <siteMapNode> girişi içerecek şekilde güncelleştirin.Next, update the Web.sitemap file to include a new <siteMapNode> entry for this lesson. Aşağıdaki XML, bir üçüncü <siteMapNode> öğesinin eklenmesini de içeren tüm Web.sitemap işaretlemesini gösterir.The following XML shows the complete Web.sitemap markup, which now includes the addition of a third <siteMapNode> element.

<?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 url="~/Admin/Default.aspx" title="Rebasing URLs" />
 </siteMapNode>
</siteMap>

Yeni oluşturulan Default.aspx sayfasında, Site.masterdört Contentfour öğesine karşılık gelen dört Içerik denetimi olmalıdır.The newly created Default.aspx page should have four Content controls corresponding to the four ContentPlaceHolders in Site.master. Içerik denetimine, ContentPlaceHolder MainContent başvuran bir metin ekleyin ve ardından sayfayı bir tarayıcıdan ziyaret edin.Add some text to the Content control referencing the MainContent ContentPlaceHolder and then visit the page through a browser. Şekil 2 ' de gösterildiği gibi tarayıcı PoweredByASPNET.gif resim dosyasını bulamaz.As Figure 2 shows, the browser cannot find the PoweredByASPNET.gif image file. Burada neler olacak?What's going on here?

~/Admin/Default.aspx içerik sayfası, About.aspx sayfası olduğu gibi footerContent bölge için aynı HTML 'i de gönderdi:The ~/Admin/Default.aspx content page is sent the same HTML for the footerContent region as was the About.aspx page:

<div id="footerContent">
 <img src="Images/PoweredByASPNET.gif" alt="Powered by ASP.NET!" />
</div>

<img> öğenin src özniteliği göreli bir URL olduğundan, tarayıcı web sayfasının klasör konumuna göre bir Images klasörü aramaya çalışır.Because the <img> element's src attribute is a relative URL, the browser attempts to look for an Images folder relative to the web page's folder location. Diğer bir deyişle, tarayıcı Admin/Images/PoweredByASPNET.gifresim dosyasını arıyor.In other words, the browser is looking for the image file Admin/Images/PoweredByASPNET.gif.

PoweredByASPNET. gif görüntü dosyası bulunamıyor The PoweredByASPNET.gif Image File Cannot Be Found

Şekil 02: PoweredByASPNET.gif resim dosyası bulunamıyor (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 02: The PoweredByASPNET.gif Image File Cannot Be Found (Click to view full-size image)

Göreli URL 'Leri mutlak URL 'lerle değiştirmeReplacing Relative URLs with Absolute URLs

Göreli bir URL 'nin tersi, eğik çizgiyle (/) veya http://gibi bir protokolle başlayan mutlak BIR URL'dir.The opposite of a relative URL is an absolute URL, which is one that starts with a forward slash (/) or a protocol such as http://. Mutlak bir URL, bilinen bir sabit noktadan bir kaynağın konumunu belirttiğinden, Web sayfasının klasör yapısındaki konumundan bağımsız olarak, herhangi bir Web sayfasında aynı mutlak URL geçerli olur.Because an absolute URL specifies the location of a resource from a known fixed point, the same absolute URL is valid in any web page, regardless of the web page's location in the website's folder structure.

Şekil 2 ' de gösterilen bozuk görüntüyü onarmak için <img> öğenin src özniteliğini göreli bir URL yerine mutlak bir URL kullanacak şekilde güncelleştirmemiz gerekir.To remedy the broken image shown in Figure 2, we need to update the <img> element's src attribute so that it uses an absolute URL instead of a relative one. Doğru mutlak URL 'yi öğrenmek için Web sitenizdeki Web sayfalarından birini ziyaret edin ve adres çubuğunu inceleyin.To determine the correct absolute URL, visit one of the web pages in your website and examine the Address bar. Şekil 2 ' de adres çubuğu gösterdiği gibi, Web uygulaması için tam yol http://localhost:3908/ASPNET_MasterPages_Tutorial_04_CS/.As the Address bar in Figure 2 shows, the fully qualified path to the web application is http://localhost:3908/ASPNET_MasterPages_Tutorial_04_CS/. Bu nedenle, <img> öğenin src özniteliğini aşağıdaki iki mutlak URL 'Lerden birine güncelleştirebiliriz:Therefore, we could update the <img> element's src attribute to either of the following two absolute URLs:

  • /ASPNET_MasterPages_Tutorial_04_CS/Images/PoweredByASPNET.gif
  • http://localhost:3908/ASPNET_MasterPages_Tutorial_04_CS/Images/PoweredByASPNET.gif

Yukarıda gösterilen formlardan birini kullanarak <img> öğenin src özniteliğini mutlak bir URL 'ye güncelleştirmek için bir dakikanızı ayırın ve ardından bir tarayıcıdan ~/Admin/Default.aspx sayfasını ziyaret edin.Take a moment to update the <img> element's src attribute to an absolute URL using one of the forms shown above and then visit the ~/Admin/Default.aspx page through a browser. Bu sefer tarayıcı PoweredByASPNET.gif resim dosyasını doğru bir şekilde bulup görüntüleyecektir (bkz. Şekil 3).This time the browser will correctly find and display the PoweredByASPNET.gif image file (see Figure 3).

PoweredByASPNET. gif görüntüsünü artık gösteriliyorThe PoweredByASPNET.gif Image is Now Displayed

Şekil 03: PoweredByASPNET.gif resim artık görüntülenir (tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 03: The PoweredByASPNET.gif Image is Now Displayed (Click to view full-size image)

Mutlak URL 'de sabit kodlama çalışırken, HTML 'nizi Web sitesinin sunucu ve klasör konumuna sıkı bir şekilde bağar, bu da değişebilir.While hard coding in the absolute URL works, it tightly couples your HTML to the website's server and folder location, which may change. http://localhost:3908/... formun mutlak URL 'SI, Visual Studio 'nun yerleşik ASP.NET Geliştirme Web sunucusu her başlatıldığında localhost önceki bağlantı noktası numarası otomatik olarak seçildiğinden, bunun nedeni Brittle.Using an absolute URL of the form http://localhost:3908/... is brittle because the port number preceding localhost is selected automatically each time Visual Studio's built-in ASP.NET Development Web Server is started. Benzer şekilde, http://localhost bölümü yalnızca yerel olarak test edilirken geçerlidir.Similarly, the http://localhost part is only valid when testing locally. Kod bir üretim sunucusuna dağıtıldıktan sonra, URL tabanı http://www.yourserver.comgibi başka bir şeye değişecektir.Once the code is deployed to a production server, the URL base will change to something else, like http://www.yourserver.com. Formdaki mutlak URL, bu uygulama yolunun geliştirme ve üretim sunucuları arasında farklı olduğu için aynı britttasyon 'dan da fazla /ASPNET_MasterPages_Tutorial_04_CS/....The absolute URL in the form /ASPNET_MasterPages_Tutorial_04_CS/... also suffers from the same brittleness because oftentimes this application path differs between development and production servers.

İyi haber, ASP.NET çalışma zamanında geçerli bir göreli URL oluşturmak için bir yöntem sunar.The good news is that ASP.NET offers a method for generating a valid relative URL at runtime.

~veResolveClientUrl kullanmaUsing~andResolveClientUrl

ASP.NET, mutlak bir URL yazmak yerine, sayfa geliştiricilerinin Web uygulamasının kökünü göstermek için tilde (~) kullanmasına izin verir.Rather than hard code an absolute URL, ASP.NET allows page developers to use the tilde (~) to indicate the root of the web application. Örneğin, bu öğreticide daha önce Admin klasöründeki Default.aspx sayfasına başvurmak için metinde ~/Admin/Default.aspx gösterimini kullandım.For example, earlier in this tutorial I used the notation ~/Admin/Default.aspx in the text to refer to the Default.aspx page in the Admin folder. ~, Admin klasörünün Web uygulamasının kökünün bir alt klasörü olduğunu gösterir.The ~ indicates that the Admin folder is a subfolder of the web application's root.

Control sınıfının ResolveClientUrl yöntemi bir URL alır ve denetimin bulunduğu Web sayfasına uygun GÖRELI bir URL 'ye değiştirir.The Control class's ResolveClientUrl method takes a URL and modifies it to a relative URL appropriate for the web page on which the control resides. Örneğin, About.aspx ResolveClientUrl("~/Images/PoweredByASPNET.gif") çağrısı Images/PoweredByASPNET.gifdöndürür.For example, calling ResolveClientUrl("~/Images/PoweredByASPNET.gif") from About.aspx returns Images/PoweredByASPNET.gif. Ancak ~/Admin/Default.aspx' den çağırmak, ../Images/PoweredByASPNET.gifdöndürür.Calling it from ~/Admin/Default.aspx, however, returns ../Images/PoweredByASPNET.gif.

Note

Tüm ASP.NET Server denetimleri Control sınıfından türetiğinden, tüm sunucu denetimlerinin ResolveClientUrl metoduna erişimi vardır.Because all ASP.NET server controls derive from the Control class, all server controls have access to the ResolveClientUrl method. Page sınıfı, Control sınıfından türetiliyor, yani bu yöntemi doğrudan ASP.NET sayfalarınızın arka plan kod sınıflarından kullanabilirsiniz.Even the Page class derives from the Control class, meaning that you can use this method directly from your ASP.NET pages' code-behind classes.

Bildirim temelli biçimlendirmede~kullanmaUsing~in the Declarative Markup

Birçok ASP.NET Web denetimi, URL ile ilgili özellikleri içerir: HyperLink denetimi bir NavigateUrl özelliğine sahiptir; Görüntü denetiminin bir ImageUrl özelliği vardır; vb.Several ASP.NET Web controls include URL-related properties: the HyperLink control has a NavigateUrl property; the Image control has an ImageUrl property; and so on. İşlendiğinde, bu denetimler URL ile ilgili özellik değerlerini ResolveClientUrl'e iletir.When rendered, these controls pass their URL-related property values to ResolveClientUrl. Sonuç olarak, bu özellikler Web uygulamasının kökünü göstermek için bir ~ içeriyorsa, URL geçerli bir göreli URL olarak değiştirilir.Consequently, if these properties contain a ~ to indicate the root of the web application, the URL will be modified to a valid relative URL.

Yalnızca ASP.NET Server denetimlerinin URL ile ilgili özelliklerinde ~ dönüştürdüğünü aklınızda bulundurun.Keep in mind that only ASP.NET server controls transform the ~ in their URL-related properties. <img src="~/Images/PoweredByASPNET.gif" />gibi statik HTML biçimlendirmesinde bir ~ görünürse, ASP.NET altyapısı, HTML içeriğinin geri kalanı ile birlikte ~ tarayıcıya gönderir.If a ~ appears in static HTML markup, such as <img src="~/Images/PoweredByASPNET.gif" />, the ASP.NET engine sends the ~ to the browser along with the rest of the HTML content. Tarayıcı ~ URL 'nin bir parçası olduğunu varsayar.The browser assumes that the ~ is part of the URL. Örneğin, tarayıcı biçimlendirmeyi alırsa <img src="~/Images/PoweredByASPNET.gif" /> resim PoweredByASPNET.gifdosyasını içeren bir alt klasör Images ~ adında bir alt klasör olduğunu varsayar.For example, if the browser receives the markup <img src="~/Images/PoweredByASPNET.gif" /> it assumes there is a subfolder named ~ with a subfolder Images that contains the image file PoweredByASPNET.gif.

Site.masterresim işaretlemesini onarmak için, var olan <img> öğesini bir ASP.NET Image Web denetimiyle değiştirin.To fix the image markup in Site.master, replace the existing <img> element with an ASP.NET Image Web control. Görüntü Web denetiminin ID PoweredByImage, ImageUrl özelliğini ~/Images/PoweredByASPNET.gifve AlternateText özelliğini "ASP.NET!" olarak güçlendirerek ayarlayın.Set the Image Web control's ID to PoweredByImage, its ImageUrl property to ~/Images/PoweredByASPNET.gif, and its AlternateText property to "Powered by ASP.NET!"

<div id="footerContent">
 <asp:Image ID="PoweredByImage" runat="server" ImageUrl="~/Images/PoweredByASPNET.gif" 
    AlternateText="Powered by ASP.NET!" />
</div>

Ana sayfada bu değişikliği yaptıktan sonra ~/Admin/Default.aspx sayfasını yeniden ziyaret edin.After making this change to the master page, revisit the ~/Admin/Default.aspx page again. Bu kez PoweredByASPNET.gif resim dosyası sayfada görüntülenir (bkz. Şekil 3).This time the PoweredByASPNET.gif image file appears in the page (see Figure 3). Görüntü Web denetimi işlendiğinde, ImageUrl özellik değerini çözümlemek için ResolveClientUrl yöntemini kullanır.When the Image Web control is rendered it uses the ResolveClientUrl method to resolve its ImageUrl property value. ~/Admin/Default.aspx, aşağıdaki HTML kaynağı kod parçacığında gösterildiği gibi, ImageUrl uygun bir göreli URL 'ye dönüştürülür:In ~/Admin/Default.aspx the ImageUrl is converted into an appropriate relative URL, as the following snippet of HTML source shows:

<div id="footerContent">
 <img id="ctl00_PoweredByImage" src="../Images/PoweredByASPNET.gif" alt="Powered by ASP.NET!" />
</div>

Note

URL tabanlı Web denetimi özelliklerinde kullanılmasına ek olarak, ~ Response.Redirect ve Server.MapPath yöntemleri çağrılırken de kullanılabilir.In addition to being used in URL-based Web control properties, the ~ can also be used when calling the Response.Redirect and Server.MapPath methods, among others. Ayrıca, ResolveClientUrl yöntemi, gerekirse doğrudan bir ASP.NET veya ana sayfanın bildirim temelli işaretten çağrılabilir; biçimlendirme ResolveClientUrl kullanarakbkz. Fritz soğangünlüğü girişi.Also, the ResolveClientUrl method may be invoked directly from an ASP.NET or master page's declarative markup, if needed; see Fritz Onion's blog entry Using ResolveClientUrl in Markup.

Ana sayfanın kalan göreli URL 'Leri düzeltiliyorFixing the Master Page's Remaining Relative URLs

Yalnızca düzelttiğimiz footerContent <img> öğesine ek olarak ana sayfa, ilgilenmeniz gereken bir veya daha fazla göreli URL içerir.In addition to the <img> element in the footerContent that we just fixed, the master page contains one more relative URL that requires our attention. topContent bölge, Default.aspxişaret eden "Ana sayfa öğreticileri" bağlantısını içerir.The topContent region includes the link "Master Pages Tutorials," which points to Default.aspx.

<div id="topContent">
 <a href="Default.aspx">Master Pages Tutorials</a>
</div>

Bu URL göreli olduğundan, kullanıcıyı ziyaret ettikleri içerik sayfasının klasöründe Default.aspx sayfasına gönderir.Because this URL is relative, it will send the user to the Default.aspx page in the folder of the content page they are visiting. Bu bağlantının kök klasördeki Default.aspx her zaman işaret edebilmesi için, ~ gösterimini kullanabilmeniz için <a> öğesini bir köprü Web denetimiyle değiştirmeniz gerekir.To have this link always point to Default.aspx in the root folder we need to replace the <a> element with a HyperLink Web control so that we can use the ~ notation.

<a> öğesi işaretlemesini kaldırın ve onun yerine bir köprü denetimi ekleyin.Remove the <a> element markup and add a HyperLink control in its place. Köprünün ID lnkHome, NavigateUrl özelliğini ~/Default.aspxve Text özelliğini "Ana sayfa öğreticileri" olarak ayarlayın.Set the HyperLink's ID to lnkHome, its NavigateUrl property to ~/Default.aspx, and its Text property to "Master Pages Tutorials."

<div id="topContent">
 <asp:HyperLink ID="lnkHome" runat="server" NavigateUrl="~/Default.aspx"
    Text="Master Pages Tutorials" />
</div>

İşte bu kadar!That's it! Bu noktada ana sayfamızda tüm URL 'Ler, ana sayfa ve içerik sayfasının bulunduğu klasörlere bakılmaksızın bir içerik sayfası tarafından işlendiğinde doğru bir şekilde temel alınır.At this point all the URLs in our master page are properly based when rendered by a content page regardless of what folders the master page and content page are located in.

<head>bölümünde otomatik URL çözümlemesiAutomatic URL Resolution in the<head>Section

Ana sayfaları kullanarak site genelinde düzen oluşturma öğreticisinde, <head> bölgesindeki Styles.css dosyasına bir <link> ekledik:In the Creating a Site-Wide Layout Using Master Pages tutorial we added a <link> to the Styles.css file in the <head> region:

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

<link> öğenin href özniteliği göreli olsa da, çalışma zamanında otomatik olarak uygun bir yola dönüştürülür.While the <link> element's href attribute is relative, it's automatically converted to an appropriate path at runtime. Ana sayfa öğreticisindeki başlık, meta etiketler ve DIĞER HTML üst bilgilerini belirtme konusunda anlatıldığı gibi, <head> bölgesi aslında sunucu tarafında bir denetimdir ve bu da, işlendiğinde iç denetimlerin içeriğini değiştirmesine olanak sağlar.As we discussed in the Specifying the Title, Meta Tags, and Other HTML Headers in the Master Page tutorial, the <head> region is actually a server-side control, which enables it to modify the contents of its inner controls when it is rendered.

Bunu doğrulamak için ~/Admin/Default.aspx sayfasını ziyaret edin ve tarayıcıya gönderilen HTML kaynağını görüntüleyin.To verify this, revisit the ~/Admin/Default.aspx page and view the HTML source sent to the browser. Aşağıdaki kod parçacığında gösterildiği gibi, <link> öğenin href özniteliği uygun göreli bir URL 'ye ../Styles.cssotomatik olarak değiştirilmiştir.As the snippet below illustrates, the <link> element's href attribute has been automatically modified to an appropriate relative URL, ../Styles.css.

<head>
 <title>
 Default
 </title>
 <link href="../Styles.css" rel="stylesheet" type="text/css" />
</head>

ÖzetSummary

Ana sayfalar genellikle bağlantılar, görüntüler ve bir URL aracılığıyla belirtilmesi gereken diğer dış kaynakları içerir.Master pages very often include links, images, and other external resources that must be specified via a URL. Ana sayfa ve içerik sayfaları aynı klasörde bulunmayabilir, göreli URL 'Lerin kullanılması önemlidir.Because the master page and content pages might not exist in the same folder, it is important to abstain from using relative URLs. Sabit kodlanmış mutlak URL 'Ler kullanılması mümkün olsa da, bu, Web uygulamasına mutlak URL 'YI sıkı bir şekilde bağar.While it is possible to use hard coded absolute URLs, doing so tightly couples the absolute URL to the web application. Mutlak URL değişirse (genellikle bir Web uygulamasını taşırken veya dağıttığınızda), geri dönüp mutlak URL 'Leri güncelleştirmeniz gerekir.If the absolute URL changes - as it often does when moving or deploying a web application - you'll have to remember to go back and update the absolute URLs.

İdeal yaklaşım, uygulama kökünü göstermek için tilde (~) kullanmaktır.The ideal approach is to use the tilde (~) to indicate the application root. URL ile ilgili özellikler içeren ASP.NET Web denetimleri, ~ çalışma zamanında uygulama köküne eşler.ASP.NET Web controls that contain URL-related properties map the ~ to the application root at runtime. Dahili olarak, Web denetimleri, geçerli bir göreli URL oluşturmak için Control sınıfının ResolveClientUrl yöntemini kullanır.Internally, the Web controls use the Control class's ResolveClientUrl method to generate a valid relative URL. Bu yöntem, her sunucu denetiminden (Page sınıfı dahil) herkese açık ve kullanılabilir hale gelir. böylece, gerekirse arka plan kod sınıflarınızda program aracılığıyla kullanabilirsiniz.This method is public and available from every server control (including the Page class), so you can use it programmatically from your code-behind classes, if needed.

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

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.