Jak získat informace formulář stránku v Custom XMLSiteMapProvider

hlasů
0

Především musím říci, že jsem použít přepisování URL na tomto projektu.

Pro stránky článku je to url: www.mysite.com/section1/section2/month/day/year/modifiedArticleName

Pro strouhankou používám kontrolu SiteMapPath s vlastní XMLSiteMapProvider protože nemůžu držet všechny mé články v XML souboru. V tomto poskytovatele, ve vlastnosti CurrentNode, je-li url je jedním z článku, jsem vytvořit nový SiteMapNode, připojit jej k příslušnému rodiče a vrátí jej.

Problém je v tom, že musím uvést do tohoto uzlu uveden název článku. I can not get to z URL, protože, jako vidíte výše, url používá upravenou název článku. Tak jsem třeba, aby si to ze stránky.

Ve vlastnosti CurrentNode jsem schopen se dostat instanci aktuální běžící straně, ale protože článek je naloženo na Page_Load, nemám titul dosud.

Myslel jsem, že o řešení, ale nejsem si jistý, přesně tak, jak to provést. Takže bych měl mít 2 XMLSiteMapProvider výchozí jeden a svou vlastní jeden. A používat vlastní jednu pouze na mé stránce článku, inicializuje ji až poté, co jsem se načíst údaje o mé článcích. Může mi někdo ukázat správným směrem?

Na zdraví.

Položena 26/11/2009 v 14:35
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Podařilo se mi dosáhnout svého cíle tím, že dělá toto:

V souboru web.config:

<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>

Vždy, když jsem na pravidelném straně, já používám výchozího poskytovatele. Když jsem na stránky článku, to já:

protected void Page_Load(object sender, EventArgs e)
    {
        LoadArticle();

        MasterPages.MyMasterPage myMaster = (MasterPages. MyMasterPage)this.Master;
        myMaster.MySiteMapPath.SiteMapProvider = "EnhancedXMLSiteMapProvider"; 
    }

A konečně, v CurrentNode majetku poskytovatele I ten název článku:

MyApp.ArticlePage page = (MyApp.ArticlePage)HttpContext.Current.Handler;
                    if (page != null)
                    {
                        if (!string.IsNullOrEmpty(page.Article.Title))
                        {
                            articleName = page.Article.Title;
                        }
                    }
Odpovězeno 27/11/2009 v 08:39
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more