【问题标题】:How to get information form page in Custom XMLSiteMapProvider如何在自定义 XMLSiteMapProvider 中获取信息表单页面
【发布时间】:2010-12-20 16:41:28
【问题描述】:

首先我需要告诉你我在这个项目上使用了 URL 重写。

文章页面的网址是:www.mysite.com/section1/section2/month/day/year/modifiedArticleName

对于面包屑,我使用带有自定义 XMLSiteMapProvider 的 SiteMapPath 控件,因为我无法将所有文章都保存在 xml 文件中。在此提供程序中,在 CurrentNode 属性中,如果 url 是一篇文章,我创建一个新的 SiteMapNode,将其链接到适当的父节点并返回它。

问题是我需要向该节点提供文章名称。我无法从 url 中得到它,因为就像你在上面看到的那样,url 使用了修改后的文章名称。所以我需要从页面中获取它。

在 CurrentNode 属性中,我可以获取当前正在运行的页面的实例,但是由于文章是在 Page_Load 上加载的,所以我还没有标题。

我想到了一个解决方案,但我不确定如何实施它。所以,我应该有 2 个 XMLSiteMapProvider,一个是默认的,一个是我的自定义的。并且只在我的文章页面上使用自定义的,只有在我加载我的文章详细信息后才初始化它。有人能指出我正确的方向吗?

干杯。

【问题讨论】:

    标签: .net sitemap provider breadcrumbs


    【解决方案1】:

    我通过这样做实现了我的目标:

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

    每当我在常规页面上时,我都会使用默认提供程序。当我在文章页面上时,我会这样做:

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

    【讨论】:

      猜你喜欢
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2010-11-02
      • 2011-01-28
      • 2019-03-27
      • 2014-12-07
      • 2017-02-20
      相关资源
      最近更新 更多