具有嵌入式ID的MVC路由

时间:2013-11-25 14:18:28

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

我们想要一条看起来像这样的路线:

/account/123/dosomething/234

在这种情况下,account将成为控制器,requesttrafficid将是行动,我想。我假设我可以这样定义这条路线:

{controller}/{accountId}/{action}/{id}

在这种情况下,这两个ID只会成为操作的参数。

问题是:可以为Web API执行类似的操作吗?

我们的普通MVC控制器只是返回视图和其他静态内容。 我们所有的数据都来自API。 我们希望我们的路线尽可能接近,如下所示:

api/account/123/dosomething/234

根据我的理解,account不是API控制器,而是dosomething。这两个ID再次成为参数。但是我如何定义这条路线?我只是硬编码“帐户”部分吗?

2 个答案:

答案 0 :(得分:1)

如果您只关注能够使路线的行动部分相同,您有两种选择:

  1. 如果您不遵循此约定,则只需指定使用适当属性的方法:

    [Method]Action
  2. 如果您想遵循惯例,但想要为路由目的自定义操作名称,则可以使用// These are functionally equivalent: public JsonResult GetSomething(int id) { ... } [HttpGet] public JsonResult DoSomething(int id) { ... } 属性:

    ActionName

答案 1 :(得分:0)

使用AttributeRouting,这是小菜一碟:http://attributerouting.net。您只需将占位符放在URL中的正确位置,MVC就会处理其余的内容。