Как контроллеры узнают, какие представления возвращать? Я думал, что это связано с соглашением об именах, но я видел случаи, например, в приложении Nerd Dinner, где имена не совпадают. Где или как я могу увидеть это сопоставление? Спасибо.
asp.net mvc — представления и контроллеры
Ответы (3)
public class EmployeesController
{
public ViewResult Index()
{
return View("CustomerName");
}
}
Будет искать:
Views/Employees/CustomerName.aspx
Views/Employees/CustomerName.ascx
Views/Shared/CustomerName.aspx
Views/Shared/CustomerName.ascx
Вот примерно так..
Когда вы просто возвращаете View(); без указания имени он искал представление с тем же именем, что и действие контроллера. В этом случае Index.aspx
Существует три способа указать имя представления.
По соглашению
public ActionResult MyAction {
return View()
}
Это будет искать представление с именем метода действия, также известное как «MyAction.ascx» или «MyAction.aspx».
** По имени **
public ActionResult MyAction {
return View("MyViewName")
}
Это будет искать представление с именем «MyViewName.ascx» или «MyViewName.aspx».
** По пути приложения **
public ActionResult MyAction {
return View("~/AnyFolder/MyViewName.ascx")
}
Этот последний смотрит только в этом одном месте, указанном вами месте.
Он основан на имени действия в контроллере. Вот пример:
У меня есть контроллер с именем UserController.
Одно из моих действий на этом контроллере называется Index.
Когда я говорю return View();
Он будет искать в каталоге Views, в папке User, Index.aspx или Index.ascx.
Он также будет искать в общей папке.