Retour d'un EditorTemplate en tant que vue partielle à partir d'un contrôleur
-
28-10-2019 - |
Question
Je souhaite renvoyer un EditorTemplate de mon contrôleur sous forme de vue partielle.
Je fais actuellement:
public ActionResult Create([Bind(Prefix="Create")]CreateViewModel model)
{
return PartialView("~/Views/Shared/EditorTemplates/Template.cshtml", model);
}
Le problème est qu'après avoir fait cela, le préfixe Create_
disparaît de ma vue.Existe-t-il un moyen de renvoyer un modèle d'éditeur sous forme de vue partielle et de conserver le préfixe?
Index.cshtml @model IndexViewModel
@using(Html.BeginForm("Create"))
{
@Html.EditorFor(m => m.Create, "Template")
<input type="submit" value="Save" />
}
Je soumets ce formulaire avec un appel AJAX.Lorsque j'ai initialement appelé EditorFor, tous les champs ont le préfixe Create_
.Cependant, après avoir soumis le formulaire et renvoyé ce PartialView, le préfixe est perdu.
La solution
Le modèle n'ayant pas été invoqué dans le contexte de la vue principale, il perd son contexte.Vous pouvez définir le préfixe dans ce cas comme suit:
public ActionResult Create([Bind(Prefix="Create")]CreateViewModel model)
{
ViewData.TemplateInfo.HtmlFieldPrefix = "Create";
return PartialView("~/Views/Shared/EditorTemplates/Template.cshtml", model);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow