仅从路径数据生成URL

Pau*_*aul 4 asp.net-mvc routes asp.net-mvc-3

我正在尝试在ASP.NET MVC中做一些简单的事情:

RouteValuesDictionary routeValues = GetMyRouteData();
var url = new UrlHelper(Html.ViewContext.RequestContext);
return url.RouteUrl(routeValues);
Run Code Online (Sandbox Code Playgroud)

问题在于,无论我做什么,URL都包含来自当前请求上下文的路由数据.我想基于来自的路线值生成一个URL GetMyRouteData().

谢谢

Dar*_*rov 7

问题在于,无论我做什么,URL都包含来自当前请求上下文的路由数据

这是设计的.您必须显式设置原始请求中存在的路由值,并且您不希望在生成的URL中为null:

    var routeValues = GetMyRouteData();
    // remove values that you want to exclude from the resulting url
    // by setting their values to null
    routeValues["id"] = null;
    var url = new UrlHelper(Html.ViewContext.RequestContext);
    return url.RouteUrl(routeValues);
Run Code Online (Sandbox Code Playgroud)

  • @Paul,解决它的方法是手动从RouteValueDictionary集合中删除路由值,否则帮助程序使用请求中的原始值.我已经回答了你的问题:你有几种可能性:编写你自己的自定义Url帮助器,它的行为符合你的要求,不要使用`RouteUrl`帮助器,因为它是如何设计的,或者删除你没有的值希望你传递给它的论点.有什么不清楚的吗?看起来很简单. (3认同)