将{Controller} /参数的MVC路由区分为{Controller} / {action}?param = myvalue

时间:2017-05-25 16:53:04

标签: c# asp.net-mvc routing asp.net-mvc-routing

我必须能够处理这样的路线: MyController/ElementType 为此,我创建了一个这样的自定义路线:

  context.MapRoute(
                  "NameOfTheRoute",
                  "MyPath/{controller}/{elementType}",
                  new { controller = "Elements", action = "Create" }
                  );

它工作正常,问题是我有一条路线 /MyPath/Elements/GetElementType?elementType=fire88

GetElementType是一个不同的操作,但由于我之前声明的自定义路由,它会转到Create操作,我怎样才能知道它们是不同的路由?

1 个答案:

答案 0 :(得分:1)

之所以选择这条路线,是因为你没有定义route来处理action,所以MyPath/{controller}/{elementType}意味着在controller名称之后一切都会被视为{elementType} 你必须创建另一个将处理action

的路线
routes.MapRoute(
    "MyPathRouteWithAction",
    "MyPath/{controller}/{action}/{elementType}",
    new {controller = "Elements", action = "Create"}
);

routes.MapRoute(
    "NameOfTheRoute",
    "MyPath/{controller}/{elementType}",
    new {controller = "Elements", action = "Create"}
);

第一个custom route将处理routs

/MyPath/Elements/GetElementType/fire88