Возврат элемента EditorTemplate как частичный вид из контроллера

Я хотел бы вернуть EditorTemplate из моего контроллера как частичный вид.

Я сейчас делаю:

public ActionResult Create([Bind(Prefix="Create")]CreateViewModel model)
{
    return PartialView("~/Views/Shared/EditorTemplates/Template.cshtml", model);
}

Проблема в том, что после этого префикс Create_ уходит от моего представления. Есть ли способ вернуть шаблон редактора в виде частичного представления и сохранить префикс?

Index.cshtml   @model IndexViewModel

@using(Html.BeginForm("Create"))
{
    @Html.EditorFor(m => m.Create, "Template")

    <input type="submit" value="Save" />
}

Я отправляю эту форму с помощью вызова AJAX. Когда я изначально вызываю редактор, все поля имеют префикс Create_. Однако после отправки формы и возврата этого PartialView префикс будет потерян.

Ответы

Ответ 1

Поскольку шаблон не вызывается в контексте основного представления, он теряет свой контекст. Вы можете определить префикс в этом случае следующим образом:

public ActionResult Create([Bind(Prefix="Create")]CreateViewModel model)
{
    ViewData.TemplateInfo.HtmlFieldPrefix = "Create";
    return PartialView("~/Views/Shared/EditorTemplates/Template.cshtml", model);
}