У меня есть ситуация, когда я хочу использовать контроллер для конкретной страницы. В этом контроллере у меня есть метод действия и куча вспомогательных методов. В реальной жизни вспомогательные методы наследуются от BaseController
, но для простоты предположим, что у меня есть только один вспомогательный метод непосредственно в моем классе контроллера, например:
[Route("/dev/test")]
public class TestController : Controller {
public IActionResult Get() {
return UnprocessedEntityResult();
}
//Some helper method that I don't want to be considered an
//action method by the routing engine.
public IActionResult UnprocessedEntityResult() {
return StatusCode(StatusCodes.Status422UnprocessableEntity);
}
}
Я специально хочу использовать маршрутизацию на основе атрибутов, и я хочу, чтобы этот маршрут на основе атрибутов был указан на уровне класса.
Учитывая ситуацию, описанную выше, при доступе к маршруту /dev/test
будет выдано AmbiguousActionException
, и это будет означать, что
AmbiguousActionException: совпадение нескольких действий. Следующие действия соответствовали данным маршрута и удовлетворяли всем ограничениям:
App.Dev.TestController.Get
App.Dev.TestController.UnprocessedEntityResult
Как я могу сообщить механизму маршрутизации, что UnprocessedEntityResult()
не является методом действия? Я предполагаю, что должен быть какой-то атрибут, который я могу применить к методу, но я не смог его найти.
NonAction
. или вы также можете сделать действие защищенным. Он будет виден производным типам, но не будет путать таблицу маршрутизации. - person Nkosi   schedule 12.04.2018