asp.net sitemap url动态参数
下面是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