Возврат EditorTemplate в виде частичного представления из контроллера - PullRequest
15 голосов
/ 06 декабря 2011

Я бы хотел вернуть шаблон 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. Когда я первоначально вызываю EditorFor, все поля имеют префикс Create_. Однако после отправки формы и возврата этого PartialView префикс теряется.

1 Ответ

26 голосов
/ 06 декабря 2011

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

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