asp.net-mvc-3 – MVC站点地​​图提供程序 – 在痕迹路径中维护URL参数

我正在使用 http://mvcsitemap.codeplex.com/的MvcSiteMapProvider为我的项目创建面包屑跟踪.我有一些URL需要传递ID来提供相应用户的信息,例如http:// localhost:52306 / Home / User?ID = 101101

当我进一步导航到站点地图(例如http:// localhost:52306 / Home / User / Details?ID = 101101)并尝试使用痕迹导航链接将我带回“用户”页面时,ID参数丢失.我尝试将SiteMapPreserveRouteData属性添加到操作方法中,但它们似乎没有做任何事情.是否有一种简单的方法可以确保保留此ID信息?我认为SiteMapPreserveRouteDataAttribute应该这样做,所以我的属性出错吗?我的方法看起来像这样:

[SiteMapPreserveRouteData]
public ActionResult User()
{
  //code
}

如果您需要我的更多信息,请告诉我.

解决方法

我这样做的方式,我拿了 original mvc site map helper source用于渲染breadcrumb,并将其改为处理参数(虽然在我的项目中我们只显示过滤参数并允许用户点击它们以松开其他过滤参数,下面是非常天真的节点实现文字,只是一个例子,它是如何做到的):
private static string SiteMapText(this MvcSiteMapHtmlHelper helper,SiteMapNode node,string linkCssClass,IDictionary<string,object> htmlAttributes)
    {
        var extraAttributes = new StringBuilder();
        foreach (var attribute in htmlAttributes)
        {
            extraAttributes.Append(" " + attribute.Key + "=\"" + attribute.Value + "\"");
        }            

        string spanHtml;
        var paramDictionary = helper.HtmlHelper.ViewContext.RequestContext.HttpContext.Request.Params.ToDictionary();
        var queryParams = paramDictionary.Select(x => string.Format("{0}:{1}",x.Key,x.Value));

        // here you add request parameters
        var title = helper.HtmlHelper.Encode(string.Format("{0} ({1})",node.Title,string.Join(";",queryParams)));

        if (!string.IsNullOrEmpty(linkCssClass))
        {
            spanHtml = string.Format("<span><span class=\"{0}\"{1}>{2}</span>",linkCssClass,extraAttributes,title);
        }
        else
        {
            spanHtml = string.Format("<span><span{1}>{0}</span>",title,extraAttributes);
        }

        return spanHtml;
    }

以同样的方式,您可以调整SiteMapLink方法,以包括当前节点的请求参数.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....