在ASP.NET 2.0中建立網站導覽層次(5)

來源:互聯網
上載者:User

  URL映射

  URL映射特性利用web.config中儲存的配置資訊把收到的請求重新對應(remap)到不同的URL。重新對應發生在對請求的所有其它處理操作之前。下面的例子示範的是重新對應一個頁面請求,實際上任意檔案類型都可以把請求重新對應到不同的URL。

  定義重新對應URL

  URL映射的配置資訊儲存在web.config中。元素中嵌套的每個元素為重新對應進入網站的(inbound)url定義了一條規則。url屬性定義了進入網站的url的exact(原樣)屬性,URL映射特性會試圖用它進行匹配操作。如果exact匹配操作發生了,就會給進入網站的URL重新寫入mappedUrl屬性值。請注意,這個特性不支援更進階的規則(例如基於萬用字元和Regex的匹配)。

  樣本web.config為大量的url定義了映射規則。樣本使用的web.sitemap檔案定義的大量帶有URL值的節點都會被重新對應。其結果是,URL映射和網站導覽的組合使用,使得開發人員可以用友好的url來定義導航結構,並使用URL映射把請求重新寫到不同的頁面來執行實際的處理過程。

  當你運行樣本的時候,請注意Menu和Treeview控制項是如何根據web.sitemap檔案中定義的網站結構來顯示導航資料的。如果你把滑鼠停留在Treeview控制項或右上方的SiteMapPath控制項的連結上方,狀態列中顯示的url是一個友好的url連結。當你點擊任何導航連結的時候,實際啟動並執行頁面是Default.aspx。但是,Menu、Treeview和SiteMapPath控制項中的導航資訊仍然反映為友好的URL結構。

  在頁面的底部你還可以看到Request.Path、Request.QueryString["category"]和Request.RawUrl返回的值。Request.Path和Request.QueryString["category"]返回的值一直反映重新對應進入網站的url的結果。但是,Request.RawUrl的值反映了重新對應之前的友好的url。當網站導覽特性試圖把url資訊與sitemap檔案包含的資料進行匹配的時候,它會使用Request.RawUrl。如果匹配的值沒有找到,XmlSiteMapProvider就把Request.Path作為替代者。在例子中,所有的友好url在web.sitemap檔案中都有條目,因此使用網站導覽的控制項一直根據友好的url來顯示和引用節點。

  以下是引用片段:
<?xml version="1.0" ?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
<system.web> 
<urlMappings enabled="true"> 
<add url="~/Category.aspx" mappedUrl="~/Default.aspx?category=default" /> 
<add url="~/Autos.aspx" mappedUrl="~/Default.aspx?category=autos" /> 
<add url="~/Games.aspx" mappedUrl="~/Default.aspx?category=games" /> 
<add url="~/Health.aspx" mappedUrl="~/Default.aspx?category=health" /> 
<add url="~/News.aspx" mappedUrl="~/Default.aspx?category=news" /> 
</urlMappings> 
</system.web> 
</configuration>



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。