创建到特定操作的不同路由mvc 6

时间:2016-01-10 18:17:35

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

我正在使用asp.net 5 mvc api,我目前正在使用帐户控制器。

因为我在许多不同的地方看到,有一种惯例是使用/api/Token路由到web api中的登录。我想路由到没有帐户前缀的特定方法,我宁愿不使用不同的控制器,我宁愿在Startup.cs中使用属性而不是路由,以避免将来混淆。

这就是我目前的

[Route("api/[controller]")]
public class AccountsController : Controller
{
    [HttpPost("login")]
    public async Task<JwtToken> Token([FromBody]Credentials credentials)
    {
     ...
    }

    [HttpPost]
    public async Task CreateUser([FromBody] userDto)
    {
      ...
    }
}

2 个答案:

答案 0 :(得分:5)

使用属性路由,您可以在simd的路由属性上使用代字号(〜)来覆盖Action的默认路由,如果需要:

Controller

答案 1 :(得分:1)

对于ASP.NET Core,似乎不再需要波浪号~(请参见已接受的答案)来覆盖控制器的路由前缀-相反,the following rule适用:

  

应用于/以/开头的动作的路由模板不会与应用于控制器的路由模板结合在一起。此示例匹配与默认路由相似的一组URL路径。

这里是一个例子:

[Route("foo")]
public class FooController : Controller
{
    [Route("bar")] // combined with "foo" to map to route "/foo/bar"
    public IActionResult Bar()
    {
        // ...
    }

    [Route("/hello/world")] // not combined; maps to route "/hello/world"
    public IActionResult HelloWorld()
    {

    }   
}