2010-01-22 2 views
0

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

ответ

1

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

Родовое правило отображения:

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

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

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

1

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

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

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

Смежные вопросы