为特定控制器路由两个可选参数

时间:2015-05-28 03:50:35

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

在特定的控制器中,我有接受两个参数的操作。部分操作为get,其中一些操作适用于post

[HttpGet]
public ActionResult CodeRead([DataSourceRequest] DataSourceRequest request, string group, string system)

[HttpPost]
public ActionResult CodeCreate([DataSourceRequest] DataSourceRequest request, ZCodes code, string group, string system)

查询字符串类似于:

http://localhost:3086/xxx/CodeRead/01/00

我已经定义了以下路由,但我总是得到一个空groupsystemrequest没问题。

    routes.MapRoute("Parameters", "xxx/{action}/{group}/{system}",
        new { controller = "xxx", action = "CodeRead", group = UrlParameter.Optional, system = UrlParameter.Optional });

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

我也交换了路线,但它没有用!

2 个答案:

答案 0 :(得分:0)

将参数置于默认值

之上
{{1}}

答案 1 :(得分:0)

this problem相同。路线很好,模型包含一个名为group的字段,我只需要将该参数重命名为其他东西。

[HttpGet]
public ActionResult CodeRead([DataSourceRequest] DataSourceRequest request, string somethingElse, string system)

[HttpPost]
public ActionResult CodeCreate([DataSourceRequest] DataSourceRequest request, ZCodes model, string somethingElse, string system)