Call Controler не с полным именем - PullRequest
0 голосов
/ 22 января 2010

Я новичок в ASP.NET MVC. Мы создаем контроллер, подобный этому 'AdminController', но вызываем его только с именем Admin. Как ASP.NET MVC справляется с этим, когда нам не нужно вызывать контроллер с полным именем?

Ответы [ 2 ]

1 голос
/ 22 января 2010

Имя контроллера, которое вы указываете в URL, не совпадает с именем класса, так же как имя действия не совпадает с фактическим методом, который используется на контроллере. Между контроллером / действием и классом / методом существует внутреннее сопоставление, которое выполняет MVC при определении того, какой код должен быть выполнен.

Общее правило отображения:

  • для контроллеров, возьмите имя контроллера (Admin) и добавьте к нему суффикс Controller и найдите класс с этим именем (AdminController).
  • для действий, введите имя действия (Details) и найдите метод на контроллере с тем же именем (ActionResult Details() {}).

Однако в настоящее время MVC поддерживает явное сопоставление действия методу с другим именем через атрибут ActionName. Таким образом, вы можете иметь действие с именем Edit, которое сопоставлено, например, с методом ActionResult EditUser() {}.

Возможно, что в будущих версиях MVC также будет добавлен аналогичный атрибут ControllerName, который позволяет явно отображать имя конкретного контроллера в конкретный класс. (На самом деле, я надеюсь, что они помогут решить проблему с предоставлением разных реализаций одного и того же имени контроллера в разных областях)

1 голос
/ 22 января 2010

Это обрабатывается средой Asp.Net MVC с использованием Routes. Мы определяем маршруты в Global.aspx.cs. Маршрут определяет, какой контроллер должен быть вызван и какое действие необходимо выполнить для данного URL, например

routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new {controller = "Home", action = "Index", id = ""}
                );

Также Asp.net MVC предпочитает соглашение по конфигурации. Таким образом, в качестве соглашения «Home» означает HomeController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...