한 정보를 얻는 방법을 양식 페이지에서 사용자 지정 XMLSiteMapProvider
-
05-07-2019 - |
문제
첫째 나는 당신을 말할 필요는 내가 사용하여 URL 재작성에 이 프로젝트입니다.
에 대한 문서 페이지 이것은 url:www.mysite.com/section1/section2/month/day/year/modifiedArticleName
이동 경로를 사용 SiteMapPath 제어 사용자 지정 XMLSiteMapProvider 할 수 없기 때문에 모든 기사에서는 xml 파일입니다.에서 공급자에 CurrentNode 속성이 있는 경우 이 url 은 하나의 문서 내가 만드는 새로운 SiteMapNode,그것을 연결하는 적절한 부모와 반환합니다.
문제는 나를 제공해야 하는 노드 이 문서는 이름입니다.나는 그것을 얻을 수 없습니다 url 에서기 때문에 보이는,위의 url 을 사용하여 수정된 문서는 이름입니다.그래서 나는 그것을 얻을 필요가에서 페이지입니다.
에 CurrentNode 시설 내가 얻을 수 있의 인스턴스는 현재 실행하는 페이지만,이후 기사이드 Page_Load,난 아직 제목.
나는 생각에 대한 솔루션이 아니지요 정확히 그것을 구현하는 방법.그래서 내가 있어야 합 2XMLSiteMapProvider,기본 내용 중 하나.고 사용하는 사용자 정의 중 하나만 내 문서의 페이지,초기화 후에 그것을 로드 기사 내용입니다.할 수 있는 누군가는 저 오른쪽 방향으로 가야합니까?
환호를 받았다.
해결책
나는 관리되는 내 목표를 달성하기 위해 이렇게 함으로써:
웹.config file:
<siteMap defaultProvider="RegularXMLSiteMapProvider">
<providers>
<add name="RegularXMLSiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" />
<add name="EnhancedXMLSiteMapProvider" type="MyApp.App_Code.EnhancedXMLSiteMapProvider, MyApp" siteMapFile="~/Web.sitemap"/>
</providers>
</siteMap>
때마다 나는 정기적 페이지 내가 사용하는 기본 제공자입니다.때 난 기사 페이지,나는 이것:
protected void Page_Load(object sender, EventArgs e)
{
LoadArticle();
MasterPages.MyMasterPage myMaster = (MasterPages. MyMasterPage)this.Master;
myMaster.MySiteMapPath.SiteMapProvider = "EnhancedXMLSiteMapProvider";
}
그리고 마지막으로,공급자의 CurrentNode 시설 내가 문서를 가져 제목:
MyApp.ArticlePage page = (MyApp.ArticlePage)HttpContext.Current.Handler;
if (page != null)
{
if (!string.IsNullOrEmpty(page.Article.Title))
{
articleName = page.Article.Title;
}
}