Dot-Net

從控制器返回 EditorTemplate 作為局部視圖

  • December 5, 2016

我想從我的控制器返回一個 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 後,前綴失去了。

由於模板沒有在主視圖的上下文中呼叫,因此它失去了上下文。在這種情況下,您可以按如下方式定義前綴:

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

引用自:https://stackoverflow.com/questions/8403182