Can you point MVC to a folder other than the default ones (Views/Shared/EditorTemplates & Views/Shared/DisplayTemplates)? I'd like to either put them in subfolders below those, or in other folders outside the Shared folder.
For example, if I have an editor template under this folder:
~\Views\Order\ProductModel.cshtml
How can I tell my EditorFor template to use this tempalte name?
I tried fully qualifying it, but this doesn't work:
@Html.EditorFor(m => m.ProductModel, @"~\Views\Order\ProductModel.cshtml")
I've tried using forward slashes & backslashes, with/without .chstml, every combination I can think of. I'm beginning to think this isn't supported, but I can't imagine why it wouldn't be.
Old question, but... proper way to add display/editor template for specific controller is to add it in
DisplayTemplates
orEditorTemplates
subfolder.Assuming that, in your example, you have
OrderController
, you can simply put display template for your model into sub-folder, like this:Then, call display template normally from your view (ex: from `~\Views\Order\Index.cshtml):
If you do this:
it won't parse Foo as a collection and apply your editor template to each item. It will rather assume that your editor template should be applied to the collection as a whole.
If you want to apply editor template to each item individually, just place it in EditorTemplates folder under your view folder (as it will have precedence) and use the default syntax:
Of course, the name of the editor template has to match the type of items in your collection.
No, I am afraid you can't do this.
That's no longer an editor template. It's a partial. If you want to share editor templates between different controllers you can simply put them inside the
~/Views/Shared/EditorTemplates
folder.As far as subfolders are concerned then you could do this:
which will render the
~/Views/CurrentController/EditorTemplates/Order/ProductModel.cshtml
or~/Views/Shared/EditorTemplates/Order/ProductModel.cshtml
editor template.