В настоящее время, чтобы вернуть представление, мне нужно написать один метод во всех контроллерах. Это метод действия «Индекс». Ему нечего делать, кроме как возвращать их соответствующие взгляды.
Так можно ли сделать их общими?
Я унаследовал один общий базовый контроллер, унаследованный от apicontroller. Итак, есть ли способ написать метод базового индекса. и я могу отменить его при необходимости?





Вы можете создать класс BaseController следующим образом:
public class BaseController : Controller
{
public virtual IActionResult Index()
{
return View();
}
}
Затем наследуйте класс вашего контроллера от базового контроллера:
public class CustomersController : BaseController
{
}
Вы можете переопределить метод Index следующим образом:
public class HomeController : BaseController
{
public override IActionResult Index()
{
return View("About");
}
}
это привело к следующей ошибке: AmbiguousActionException: несколько действий совпали. Следующие действия соответствуют данным маршрута и удовлетворяют всем ограничениям: MyAppNamespace.Controllers.HomeController.Index (MyAppName) MyAppNamespace.Controllers.HomeController.Index (MyAppName)
Вам нужно либо удалить метод Index из вашего класса HomeController, если вы наследуете от базового класса контроллера, либо вам нужно использовать ключевое слово override с методом Index
Я удалил из класса homecontroller. все же это дает мне эту ошибку.
Вы используете области MVC в своем приложении?
Ой. Виноват. Я снял с другого контроллеры. У Homecontroller все еще было это. Вот чего мне не хватало. очень глупая ошибка. Спасибо.
Название BaseController сбивает с толку: docs.microsoft.com/nl-nl/aspnet/core/web-api/…
Я бы выбрал KISS-принцип. Просто скопируйте код. Это более очевидно. Вы уже заметили недостаток: AmbiguousActionException