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.
No, I am afraid you can't do this.
For example, if I have an editor template under this folder
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:
@Html.EditorFor(x => x.Foo, "Order/ProductModel") which will render the ~/Views/CurrentController/EditorTemplates/Order/ProductModel.cshtml or ~/Views/Shared/EditorTemplates/Order/ProductModel.cshtml editor template.
Old question, but... proper way to add display/editor template for specific controller is to add it in DisplayTemplates or EditorTemplates subfolder.
Assuming that, in your example, you have OrderController, you can simply put display template for your model into sub-folder, like this:
~\Views\Order\DisplayTemplates\ProductModel.cshtml Then, call display template normally from your view (ex: from `~\Views\Order\Index.cshtml):
@Html.DisplayFor(m => m.MyProductModelProperty)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With