Asp.Net Core Url.Action использует контроллер WebApi - PullRequest
0 голосов
/ 10 июля 2019

В моем приложении есть два типа контроллеров. Один контроллер WebApi и один контроллер MVC. Со следующей структурой моего проекта:

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

Как видите, у меня есть AccountController дважды в двух разных пространствах имен. В папке Api находится контроллер WebApi, а в разделе «Контроллеры» - контроллер MVC.

Я хотел бы использовать @Url.Action("GetAll", "Account") внутри моего представления для создания ссылки на мой контроллер WebApi. Как мне различить контроллер Api и контроллер MVC. Как я могу сказать, использовать ли контроллер Api или MVC?

1 Ответ

1 голос
/ 10 июля 2019

Одним словом: вы не можете.Url.Action не имеет возможности различать по пространству имен;вам понадобятся уникальные имена контроллеров.Это одна из причин, по которой обычно добавляется Api в имя контроллера API, то есть AccountController и AccountApiController.

Если вы действительно хотите использовать AccountController для обоих, ваш единственныйреальным вариантом является использование площадей.Вы можете создать Api область, а не просто подпапку в Controllers, и тогда вы можете сделать:

@Url.Action("GetAll", "Account", new { area = "Api" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...