我在控制器中有一个动作,如:
public ActionResult Index(string ssn)
{
}
和默认路线值:{controller}/{action}/{id}
我不想使用像/Home/Index?ssn=1234
这样的网址。我希望像/Home/Index/1234
一样使用。
但我也不想为ssn参数(或自定义模型绑定器)添加新的路由值。
是否有一些完整的属性,例如[ActionName]
但是参数?
这样的事情:
public ActionResult Index([ParameterBinding("id")] string ssn)
{
}
答案 0 :(得分:0)
Darin& Rumi提到 - 没有内置属性,但是您可以使用单个路径上的RouteCollection.MapRoute
约束参数在单个新路由中实现相同的影响(跨多个控制器/操作)。
以下路由配置将“SSN”路由应用于Foo或Bar控制器,任何其他控制器将通过默认路由。
routes.MapRoute(
name: "SSN",
url: "{controller}/{action}/{ssn}",
defaults: new { controller = "Foo", action = "Index" },
constraints: new { controller = "(Foo|Bar)", action = "Index" }
);
// default route
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
编辑:或者您可以使用似乎支持您最初请求的ActionParameterAlias库。