我正在扩展模型以包含链接属性。它是基于其他属性在其内,以产生一个链路:已删除路径值,但仍添加为查询字符串参数
public partial class MyModelType
{
public string FilterLink
{
get
{
var u = new UrlHelper(HttpContext.Current.Request.RequestContext);
var route = new RouteValueDictionary(u.RequestContext.RouteData.Values);
route.Remove("other");
route.Add("other", null);
route.Add("id", this.Id);
return u.Action("Index", "ControllerName", route);
}
}
}
链接生成是/ControllerName/1?other=2
。如果我摆脱了route.Remove("other")
,我得到基于映射路线的链接:/ControllerName/1/2
。从路由中删除时如何防止它被用作查询字符串参数? UrlHelper似乎以某种方式添加它,即使它不是路由值。
在u.RequestContext.RouteData.Values中传递了什么值? – rae1
只是'other'和'id'(尽管可能还有更多)。 “其他”可能是也可能不是路由值。它取决于模型所在的视图和动作参数(“其他”可为空) – SamWM