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

Это также будет выглядеть в общей папке.

Другие вопросы по тегам