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 回答