Pouvez-vous pointer MVC à un dossier autre que les par défaut (Vues/Partager/EditTorTorplates et vues/PARTAGE/DISPLAYTemplates)? J'aimerais soit les mettre dans des sous-dossiers sous ceux-ci, soit dans d'autres dossiers en dehors du dossier partagé.
Par exemple, si j'ai un modèle d'éditeur dans ce dossier:
~\Vues\ordre\producteurModel.cshtml
Comment puis-je dire à mon modèle d'éditeur d'utiliser ce nom de tempalte?
J'ai essayé de le qualifier pleinement, mais cela ne fonctionne pas:
@Html.EditorFor(m => m.ProductModel, @"~\Views\Order\ProductModel.cshtml")
J'ai essayé d'utiliser des barres obliques et des backslashes, avec/sans .chstml, chaque combinaison que je peux penser. Je commence à penser que cela n'est pas pris en charge, mais je ne peux pas imaginer pourquoi ce ne serait pas.
Non, je crains que vous ne puissiez pas faire cela.
Par exemple, si j'ai un modèle d'éditeur dans ce dossier
Ce n'est plus un modèle d'éditeur. C'est une partielle. Si vous souhaitez partager des modèles d'éditeur entre différents contrôleurs, vous pouvez simplement les mettre à l'intérieur de l'~/Views/Shared/EditorTemplates
dossier.
En ce qui concerne les sous-dossiers, vous pouvez le faire:
@Html.EditorFor(x => x.Foo, "Order/ProductModel")
qui rendra le ~/Views/CurrentController/EditorTemplates/Order/ProductModel.cshtml
ou ~/Views/Shared/EditorTemplates/Order/ProductModel.cshtml
Modèle de rédaction.
Vieille question, mais ... une bonne façon d'ajouter un modèle d'affichage/éditeur pour un contrôleur spécifique est de l'ajouter dans DisplayTemplates
ou EditorTemplates
sous-dossier.
En supposant que, dans votre exemple, vous avez OrderController
, vous pouvez simplement mettre un modèle d'affichage pour votre modèle dans le sous-dossier, comme celui-ci:
~\Views\Order\DisplayTemplates\ProductModel.cshtml
Ensuite, Template d'affichage d'appel Normalement à partir de votre vue (ex: de `\ vues\commander\index.cshtml):
@Html.DisplayFor(m => m.MyProductModelProperty)
Si tu fais ça:
@Html.EditorFor(x => x.Foo, "Order/ProductModel")
il n'étilisera pas FOO en tant que collection et appliquez votre modèle d'éditeur à chaque article. Il préférera supposer que votre modèle de rédaction devrait être appliqué à la collection dans son ensemble.
Si vous souhaitez appliquer un modèle d'éditeur à chaque article individuellement, placez-le dans le dossier EditorTemplates dans votre dossier View (car il aura préséance) et utiliser la syntaxe par défaut:
@Html.EditorFor(x => x.Foo)
Bien sûr, le nom du modèle de l'éditeur doit correspondre au type d'éléments de votre collection.