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.

Était-ce utile?

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
scroll top