Просмотр имен каталогов и имен файлов важен, потому что структура ASP.NET MVC делает определенные предположения о них. Если вы не соответствуете этим предположениям, то вы должны написать код, чтобы платформа знала, что вы делаете. Вообще говоря, вы должны соответствовать этим предположениям, если у вас нет веских причин не делать этого.
Давайте рассмотрим простейшее из возможных действий контроллера:
public ActionResult NotAuthorized()
{
return View();
}
Поскольку в вызове View () имя представления не было указано, платформа будет предполагать, что имя файла представления будет таким же, как имя действия. Фреймворк имеет тип ViewEngine, который будет предоставлять расширение. По умолчанию ViewEngine - это WebFormViewEngine, который примет это имя и добавит к нему .aspx. Таким образом, полное имя файла в этом случае будет NotAuthorized.aspx.
Но в какой папке будет найден файл? Опять же, ViewEngine предоставляет эту информацию. С WebFormViewEngine он будет выглядеть в двух папках: ~ / Views / Shared и ~ / Views / {controller}
Так что если ваш контроллер называется AccountController, он будет выглядеть в ~ / Views / Account
Но могут быть случаи, когда вы не хотите следовать этим правилам. Например, два разных действия могут возвращать одно и то же представление (с другой моделью или чем-то еще). В этом случае, если вы явно указываете имя представления в своем действии:
public ActionResult NotAuthorized()
{
return View("Foo");
}
Обратите внимание, что в WebFormViewEngine «имя представления», как правило, совпадает с именем файла, за исключением расширения, но для каркаса это не требуется для других механизмов представления.
Точно так же у вас может быть причина, по которой ваше приложение должно искать представления и папки не по умолчанию. Вы можете сделать это, создав собственный ViewEngine. Я показываю технику в этом сообщении в блоге , но имена типов отличаются, так как он был написан для более ранней версии фреймворка. Однако основная идея остается прежней.