Asp.Net Core Url.Action使用WebApi控制器

时间:2019-07-10 17:23:17

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

我的应用程序中有两种类型的控制器。 1个WebApi控制器和1个MVC控制器。使用我的项目的以下结构:

Project
|-- Controllers
|   |-- Api
|   |   |-- AccountController
|   |   |-- ...
|   |-- AccountController
|   |-- ...

如您所见,我在两个不同的命名空间中都有两次AccountController。 Api文件夹中的一个是WebApi控制器,而Controllers下的一个是MVC控制器。

我想在视图中使用@Url.Action("GetAll", "Account")来生成指向WebApi控制器的链接。如何区分Api控制器和MVC控制器。我该如何判断是使用Api还是MVC控制器?

1 个答案:

答案 0 :(得分:1)

总之:您不能。 Url.Action无法按名称空间区分;您将需要唯一的控制器名称。这是为什么通常在API控制器的名称(即ApiAccountController)中添加AccountApiController的部分原因。

如果您确实想同时使用AccountController,则唯一的选择是使用区域。您可以创建一个Api区域,而不只是Controllers下的一个子文件夹,然后可以执行以下操作:

@Url.Action("GetAll", "Account", new { area = "Api" })