【问题标题】:Routes of mvc and api projects conflictmvc和api项目的路由冲突
【发布时间】:2021-10-18 01:45:24
【问题描述】:

我有一个 .NET Core 项目,它在同一个解决方案中包含 MVC 和 Web API。我正在尝试将这些项目相互连接,但 API 的路由和 MVC 的冲突。

我有一个这样的标签,

<a asp-controller="Categories" asp-action="Update" 
   class="btn btn-primary" asp-route-categoryId="@category.Id">Update</a>

那么这个a标签会生成一个这样的链接

href="/api/Categories?categoryId=1" 

我的控制器和操作使用相同的名称,我认为这就是它发生的原因,所以我更改了名称然后它起作用了。我可以更改名称,但想知道为什么会这样。有不同的解决方案吗?

【问题讨论】:

  • 对于 api 和 mvc 应用程序,您需要哪些 href?你现在有什么href?
  • My controllers and actions are using same names 是什么意思?能分享一下你的控制器和动作吗?
  • 这是查看 mvc 中内容的标签,此 href 必须触发 mvc 控制器中的操作,但如您所见,它会执行 api 的操作
  • 例如,我在 api 和 mvc 中有类别控制器,这两个控制器都有更新操作,结构完全相同。

标签: c# asp.net-core .net-core asp.net-core-webapi asp.net-core-3.1


【解决方案1】:

其中一种解决方案可能是使用属性路由。例如

API

[ApiController]
[Route("api/[controller]/[action]")]
public class CategoryController:ControllerBase

mvc

[Route("[controller]/[action]")]
public class CategoryController:Controller

或者你可以在启动文件中配置类似的路由模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2016-04-17
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 2012-03-19
    • 2021-08-24
    相关资源
    最近更新 更多