-1
我有一個Web應用程序,我繼承了它包含一個頁面,該頁面根據傳入它的對象的狀態決定您需要訪問哪個URL。ASP.Net SiteMap URL Distinction
該URL位於站點地圖中,並且有一種方法可以檢索所有這些URL。
private Dictionary<string, string> GetUrls() {
var urls = new Dictionary<string, string>();
var provider = SiteMap.Provider;
var page1 = provider.FindSiteMapNodeFromKey("page1");
var page2 = provider.FindSiteMapNodeFromKey("page2");
if (page1 == null || page2 == null)
{
throw new ApplicationException("Pages not found in sitemap");
}
urls["page1URL"] = page1.Url.ToString(CultureInfo.InvariantCulture);
urls["page2URL"] = page2.Url.ToString(CultureInfo.InvariantCulture);
return urls;
}
可惜這種方法中,1和Page 2總是空
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true">
<siteMapNode resourceKey="Concessions" rule="AllowRead">
<siteMapNode url="/page1.aspx" resourceKey="page1" rule="AllowAuthorised"/>
<siteMapNode url="/page2.aspx" resourceKey="page2" rule="AllowAuthorised"/>
</siteMapNode>
</siteMap>
我試圖通過這個過程來調試,但我沒有問題的附近的任何地方獲得。 所以回顧一下,我需要這種方法來返回站點地圖中定義的頁面的URL。
備註部分很有趣(http://msdn.microsoft.com/en-us/library/system.web.sitemapprovider .findsitemapnodefromkey.aspx) - 它使用什麼提供程序? –
是的,我也看到了這個「在所有情況下總是返回null」,但是我怎麼才能得到這個URL,請原諒我的新手 – Deviland
我認爲你的問題可能是你使用了默認的XmlSiteMapProvider--看着那個關鍵是URL本身。所以你需要傳遞「/page1.aspx」或者實現你自己的提供程序並覆蓋FindSiteMapNodeFromKey –