15

コントローラーから 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 を返すと、プレフィックスが失われます。

4

1 に答える 1

26

テンプレートはメイン ビューのコンテキストで呼び出されていないため、コンテキストが失われます。この場合、次のようにプレフィックスを定義できます。

public ActionResult Create([Bind(Prefix="Create")]CreateViewModel model)
{
    ViewData.TemplateInfo.HtmlFieldPrefix = "Create";
    return PartialView("~/Views/Shared/EditorTemplates/Template.cshtml", model);
}
于 2011-12-06T16:36:12.950 に答える