Имя контроллера, которое вы указываете в URL, не совпадает с именем класса, так же как имя действия не совпадает с фактическим методом, который используется на контроллере. Между контроллером / действием и классом / методом существует внутреннее сопоставление, которое выполняет MVC при определении того, какой код должен быть выполнен.
Общее правило отображения:
- для контроллеров, возьмите имя контроллера (
Admin
) и добавьте к нему суффикс Controller
и найдите класс с этим именем (AdminController
).
- для действий, введите имя действия (
Details
) и найдите метод на контроллере с тем же именем (ActionResult Details() {}
).
Однако в настоящее время MVC поддерживает явное сопоставление действия методу с другим именем через атрибут ActionName
. Таким образом, вы можете иметь действие с именем Edit
, которое сопоставлено, например, с методом ActionResult EditUser() {}
.
Возможно, что в будущих версиях MVC также будет добавлен аналогичный атрибут ControllerName
, который позволяет явно отображать имя конкретного контроллера в конкретный класс. (На самом деле, я надеюсь, что они помогут решить проблему с предоставлением разных реализаций одного и того же имени контроллера в разных областях)