-1
내가 상속 한 웹 응용 프로그램에는 전달 된 개체의 상태를 기반으로 방문해야하는 URL을 결정하는 페이지가 들어 있습니다.ASP.Net 사이트 맵 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;
}
불행하게도이 방법에서, PAGE1 페이지 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>
null입니다. 다시 요약하면이 방법은 사이트 맵 내에 정의 된 페이지의 URL을 반환하는 데 필요합니다.
설명 부분을 낭비 미안 (흥미 http://msdn.microsoft.com/en-us/library/system.web.sitemapprovider .findsitemapnodefromkey.aspx) - 어떤 공급자가 사용합니까? –
예 "항상 모든 경우에 null을 반환합니다."그러나 URL을 얻는 방법, 내 newb-ness를 용서하십시오. – Deviland
내 생각에 문제는 기본 XmlSiteMapProvider를 사용하고있는 것일 수 있습니다. URL 자체입니다. 따라서 "/page1.aspx"를 전달하거나 자신의 공급자를 구현하고 FindSiteMapNodeFromKey를 재정의해야합니다. –