我定义了以下路线:
context.MapRoute("routeCreate", "{aval}/anArea/aController/Create/{val.Id}", new { action = "Create", controller = "aController" });
在定义以下包罗万象的路线之前,哪些功能是:
context.MapRoute("catchallCreate", "{aval}/anArea/{controller}/Create/", new { action = "Create"});
路由由以下方式调用:
RedirectToAction("Create", new {val.Id});
结果 URL 转到 ?Id=1 而不是 /1,它似乎没有选择“val”。部分了。
我认为使用 {val.Id} 可能存在问题,因为我无法使用该参数语法创建约束。
更新:
也许我仍然缺少一些东西,定义了以下路线我仍然看到解决方案 ?Id=1 而不是 /1
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.Add(
new Route(
"{aval}/anArea/aController/Create/{val.Id}",
new RouteValueDictionary()
{
{ "action", "Create" },
{ "controller", "aController" },
{ "val.Id", UrlParameter.Optional }
},
null,
new RouteValueDictionary() { { "area", "anArea" } },
new MvcRouteHandler()));
// catchall
context.MapRoute("Create", "{aVal}/anArea/{controller}/Create", new { action = "Create" });
即使删除了 Optional 它也不起作用。第一条路线仅在删除全部内容时才有效。