我正在寻找一种在使用标准<asp:SiteMapPath>
实现导航回堆栈时保留查询字符串参数的方法。
为简单起见,假设我有一个Animal > Breed
页面堆栈:
<siteMapNode url="~/Animal.aspx" title="Animal" >
<siteMapNode url="~/Breed.aspx" title="Breed"/>
</siteMapNode>
我导航到Animal.aspx?type=Dog
并选择一个狗品种导航到Breed.aspx?type=Bulldog
在Breed.aspx
我有正确的面包屑Animal > Breed
,但Animal
网址只是Animal.aspx
。如何将Animal链接作为父/上一页Animal.aspx?type=Dog
?
在这个简单的例子中,我意识到我可以将所有动物类型添加为具有相关类型的单独节点。我的实际设置更复杂,需要从数据库中读取ID。
答案 0 :(得分:0)
您可以将参数附加到用户要点击的任何链接以导航...
所以你会使用像
这样的东西mytype = Request.QueryString["type"];
获取值,将其应用于链接...
mylink.NavigateURL = "animal.aspx?type="+mytype;
我是在编辑器外做的,所以你需要注意语法错误...
这里有一些文档...
http://msdn.microsoft.com/en-us/library/ms524784(v=vs.90).aspx
答案 1 :(得分:0)
作为accepted answer here我在详细页面中添加了以下内容(示例中为Breed.aspx)
protected void Page_Load(object sender, EventArgs e){
if (!IsPostBack)
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}
SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e){
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
currentNode.ParentNode.Url += "?type=" + this.Breed.AnimalType;
return currentNode;
}
修改强>
似乎运作良好
网址已更新但我在菜单控件中大量使用CurrentNode在网站地图中上下导航。当我克隆我失去兄弟信息打破我的菜单。
我要么找到一种克隆方法,它保留整个站点地图或找到另一种修改ParentNode.Url的方法