下面是SiteMap部分代码
<siteMapNode url=
"~/NewCenter.aspx" title=
"新闻中心" description=
"新闻中心" >
</siteMapNode>
<siteMapNode url=
"~/TypicalCase.aspx" title=
"口腔服务" description=
"口腔服务" >
</siteMapNode>
有时候siteMap中需要动态添加参数,例如siteMap中配置url为~/
TypicalCase.aspx
而实际应用中需要传参如:~/TypicalCase.aspx?id=
1
下面是实现,参考网上代码完成的。
这是我写的一个用户控件的Cs文件
protected void Page_Load(
object sender, EventArgs e)
{
SiteMap.SiteMapResolve +=
new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}
/// <summary>
/// 当访问当前节点时候
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <returns></returns>
SiteMapNode SiteMap_SiteMapResolve(
object sender, SiteMapResolveEventArgs e)
{
//当在母版中获得当前页面的Request对象时,必须使用如下方法:
HttpRequest currRequest =
System.Web.HttpContext.Current.Request;
/* SiteMap.CurrentNode对象是 BBS.sitemap 文件的当前节点值。
* 而SiteMap.CurrentNode 对象在SiteMap类中只读,
* 所以克隆一个SiteMapNode,并修改其对象的Title属性值。
*/
string[] keys =
currRequest.QueryString.AllKeys;
if (keys !=
null && keys.Length >
0 && SiteMap.CurrentNode != null)
{
SiteMapNode currMapNode = SiteMap.CurrentNode.Clone(
false);
StringBuilder sbParam =
new StringBuilder();
for (
int i =
0; i < keys.Length; i++
)
{
string key =
keys[i];
if (i >
0 && i != key.Length -
1)
{
sbParam.Append("&");
}
sbParam.Append(key +
"=" +
currRequest.QueryString[key]);
}
currMapNode.Url = currMapNode.Url +
"?" +
sbParam;
return currMapNode;
}
else
{
return SiteMap.CurrentNode;
}
}
参考Url:http://www.cnblogs.com/xugang/archive/2010/12/01/1893260.html
转载于:https://www.cnblogs.com/lmy213/archive/2013/05/10/3070346.html
相关资源:ASP.NET 站点地图(sitemap)简明教程