现在有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
英文的时候就不可以向各位高手请教
默认的是中文
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
英文的时候就不可以向各位高手请教
中文的时候,在page_load执行完了之后
紧接着
就会执行 private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)英文的时候没有反应
可以考虑一下这种方法
谢谢