Возврат элемента 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);
}