Как определить местоположение пользовательского шаблона редактора при использовании областей MVC? - PullRequest
4 голосов
/ 21 ноября 2011

Насколько я понимаю, местоположение:

~/Views/Shared/EditorTemplates/ViewModelName

Однако у меня есть много папок Views, использующих области.Могу ли я определить файл для использования с каким-либо параметром вызова

@Html.EditorFor( ...

Ответы [ 2 ]

6 голосов
/ 15 июня 2013

Это пути поиска по умолчанию, которые RazorViewEngine будет искать в шаблоне редактора, в следующем порядке:

"~/Areas/{area}/Views/{controller}/EditorTemplates/{templateName}.cshtml",
"~/Areas/{area}/Views/Shared/EditorTemplates/{templateName}.cshtml",
"~/Views/{controller}/EditorTemplates/{templateName}.cshtml",
"~/Views/Shared/EditorTemplates/{templateName}.cshtml",

Если не указано, templateName значение по умолчанию соответствует типу объекта (в вашем случае «ViewModelName»). Если MVC не найдет шаблон с таким именем, он разрешит рендеринг с использованием известных встроенных шаблонов (int, string, collection, object и т. Д.).

Вы можете указать имя шаблона для переопределения значений по умолчанию:

@Html.EditorFor(m => m.MyDate, "_MyTemplate")

Вы также можете указать относительные пути:

@Html.EditorFor(m => m.MyDate, "../_MyTemplate")

Вы не можете указывать полные пути в любой форме (например: "~/Views/Custom/EditorTemplates/ViewModelName"), и вы никогда не должны указывать расширение в имени шаблона (например: '_MyTemplate.cshtml' или '_MyTemplate.vbhtml' !)

0 голосов
/ 21 ноября 2011

Вы можете передать местоположение шаблона в качестве второго аргумента.

@Html.EditorFor(x => x.Foo, "~/Views/Custom/EditorTemplates/ViewModelName.cshtml")

При этом я бы избегал этого и придерживался соглашений.Это означает, что если вы хотите использовать какой-либо шаблон редактора из-за пределов области, в которой он определен, то, вероятно, вы не определили этот шаблон в нужном месте и должны переместить его в общую папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...