mvc和api项目的路由冲突
Posted
技术标签:
【中文标题】mvc和api项目的路由冲突【英文标题】:Routes of mvc and api projects conflict 【发布时间】: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 中有类别控制器,这两个控制器都有更新操作,结构完全相同。
【参考方案1】:
其中一种解决方案可能是使用属性路由。例如
API
[ApiController]
[Route("api/[controller]/[action]")]
public class CategoryController:ControllerBase
mvc
[Route("[controller]/[action]")]
public class CategoryController:Controller
或者你可以在启动文件中配置类似的路由模板。
【讨论】:
以上是关于mvc和api项目的路由冲突的主要内容,如果未能解决你的问题,请参考以下文章