现在有2个web.sitemap分别对应中文,英文
默认的是中文
web.config文件中是这样定义的,只添加了英文的,中文的是用默认
<siteMap>
<providers>
<add siteMapFile="~/INI/Web_en.sitemap" name="XmlSiteMapProvider_EN" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</siteMap>在sitemap的第三层比如
layer3.aspx,sitemap是这样的
>layer1>layer2>layer3
这样的时候,需要动态改变layer2的链接
现在默认的中文可以改变,英文的时候不可以变,语言是在login画面选择的
page_load事件中
当中文的时候
this.SiteMapPath1.Provider = System.Web.SiteMap.Providers[""];
英文
this.SiteMapPath1.Provider = System.Web.SiteMap.Providers["XmlSiteMapProvider_EN"]然后
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);    private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
    {
        SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
        if (currentNode.Description == "layer3.aspx")
        {
            string currentRequest = e.Context.Request.Url.PathAndQuery;
            if (currentNode.ParentNode != null)
            {
                currentNode.ParentNode.Url = "~/layer2.aspx?id" + "=" + txtID.Text;
            }
        }
        return currentNode;
    }中文的时候,确实,能将layer2的链接地址改变,而且能触发SiteMap_SiteMapResolve
英文的时候就不可以向各位高手请教

解决方案 »

  1.   

    好像 currentNode 创建出来后没应用啊
      

  2.   


    中文的时候,在page_load执行完了之后
    紧接着
     就会执行 private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)英文的时候没有反应
      

  3.   

    那不就是 web.sitemap 的 本地化 么?http://www.west263.com/www/info/31971-1.htm或上baidu 搜 “web.sitemap 本地化”
      

  4.   

    我知道你的意思了,就是用1个web.sitemap,其余的是用资源文件,
    可以考虑一下这种方法
    谢谢