asp.net mvc - Представления и контроллеры
Как контроллеры знают, какие представления возвращать? Я думал, что это по соглашению об именах, но я видел случаи, например, в приложении Nerd Dinner, где имена не совпадают. Где или как я вижу это отображение? Благодарю.
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()
}
Это будет искать представление с именем метода действия, aka "MyAction.ascx" или "MyAction.aspx"
** По имени **
public ActionResult MyAction {
return View("MyViewName")
}
Это будет искать представление с именем "MyViewName.ascx" или "MyViewName.aspx".
** По пути приложения **
public ActionResult MyAction {
return View("~/AnyFolder/MyViewName.ascx")
}
Этот последний выглядит только в этом месте, месте, которое вы указали.
Он основан на имени действия в контроллере. Вот пример:
У меня есть контроллер с именем UserController.
Одно из моих действий на этом контроллере называется Index.
Когда я говорю, верните View();
Он будет искать в каталоге Views, в папке User, Index.aspx или Index.ascx
Это также будет выглядеть в общей папке.