asp.net mvc - Представления и контроллеры - PullRequest
2 голосов
/ 06 августа 2009

Как контроллеры узнают, какие представления возвращать? Я думал, что это по соглашению об именах, но я видел примеры, например, в приложении Nerd Dinner, где имена не совпадают. Где или как я вижу это отображение? Спасибо.

Ответы [ 3 ]

6 голосов
/ 06 августа 2009
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

2 голосов
/ 08 августа 2009

Существует три способа указать имя представления.

По соглашению

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")
}

Этот последний просматривает только это место, указанное вами.

0 голосов
/ 06 августа 2009

Он основан на имени действия в контроллере. Вот пример:

У меня есть контроллер с именем UserController.

Одно из моих действий на этом контроллере называется Index.

Когда я говорю return view ();

Он будет искать в каталоге Views, в папке User, Index.aspx или Index.ascx

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

...