2012-05-14 32 views
-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。

+0

備註部分很有趣(http://msdn.microsoft.com/en-us/library/system.web.sitemapprovider .findsitemapnodefromkey.aspx) - 它使用什麼提供程序? –

+0

是的,我也看到了這個「在所有情況下總是返回null」,但是我怎麼才能得到這個URL,請原諒我的新手 – Deviland

+1

我認爲你的問題可能是你使用了默認的XmlSiteMapProvider--看着那個關鍵是URL本身。所以你需要傳遞「/page1.aspx」或者實現你自己的提供程序並覆蓋FindSiteMapNodeFromKey –

回答

0

完全無關的錯誤,對不起,在文檔的查找方法浪費你的時間