문제

첫째 나는 당신을 말할 필요는 내가 사용하여 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;
                        }
                    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top