首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两条不同的路由映射到相同的控制器操作

将两条不同的路由映射到相同的控制器操作
EN

Stack Overflow用户
提问于 2016-10-26 18:30:53
回答 1查看 997关注 0票数 0

我正在以下站点上扩展示例:https://docs.asp.net/en/latest/tutorials/first-web-api.html

它们有一个ToDo apis:/api/todo/api/todo/{id}

我想把它扩展到ToDoGroups /api/ToDoGroup

在ToDoGroup下,我想通过以下方式达到一个ToDo:/api/ToDoGroup/{id}/ToDo/{id}

如何使它指向相同的控制器操作?例如,下面的操作还将有另一条类似于[HttpGet("ToDoGroup/{ToDoGroupid}/ToDo/{ToDoid}", Name = "GetTodo")]的路由

代码语言:javascript
运行
复制
[HttpGet("{id}", Name = "GetTodo")]
public IActionResult GetById(string id)
{
    var item = TodoItems.Find(id);
    if (item == null)
    {
        return NotFound();
    }
    return new ObjectResult(item);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-26 18:55:50

首先更改控制器的路由前缀:

代码语言:javascript
运行
复制
      [Route("api/todogroup/{groupId:int}")]
      public class TodoController : Controller 

然后改变你的行动路线:

代码语言:javascript
运行
复制
      [HttpGet("todo/{id}", Name = "GetTodo")]
      public IActionResult GetById(int groupId, string id)

编辑:获得这两条路由,您可以这样做:

代码语言:javascript
运行
复制
        [Route("api")]
      public class TodoController : Controller 

          [HttpGet("todo/{id}", Name = "GetTodo")]//api/todo/43
      public IActionResult GetById(string id)

      [HttpGet("todogroup/{groupdId:int}/todo/{id}", Name = "GetGroupTodo")]//api/todogroup/100/todo/43
      public IActionResult GetById(int groupId, string id)

Asp.Net Web有一种消除路由前缀(在控制器上指定的路由)的方法,但我无法在Asp.Net核心中找到等效的路由前缀。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40269706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档