任何人都知道如何从控制器调用与 Html.EditorFor() 等效的功能吗?
我的视图中有一个标准表。这些行使用 EditorTemplate
<table id="tableOfBar">
<tfoot>
<tr><td colspan="2">Some paging controls and whatnot</td></tr>
</tfoot>
<tbody>
<% for (int i=0;i<Model.Rows.Count();i++)
{
int j = i;
%><%: Html.EditorFor(m => m.Rows[j], "FooRowTemplate", "Rows["+j+"]", new { OtherViewDataStuff})%>
</tbody>
</table>
编辑器模板是一个强类型的局部视图,它返回<tr>
和子元素。
所有这些工作正常,但下一步是添加一个“添加行”按钮。由于一系列超出范围的原因,我想访问服务器而不是纯粹的客户端解决方案。我想要做的是将 EditorTemplate 作为部分视图返回,并让 JavaScript 获取返回的 Html 并将其附加到表中。
[HttpPost]
public ActionResult AddRow(FooModel model)
{
var row = new FooRowModel();
model.AddRow(row);
var index = model.Rows.IndexOf(row);
return PartialView("~/Areas/MyArea/Views/Shared/EditorTemplates/FooRowTemplate.ascx", model.Rows[index]);
}
除了输入命名之外,所有这些都可以正常工作。缺少的部分是集合前缀内容,它告诉模型绑定器如何在回发时重新组装模型。在视图方面,您可以指定这应该是什么(这是上面调用的"Rows["+j+"]"
一部分EditorFor()
)。
你能像 EditorFor() 一样给局部视图一个 html 字段名称前缀吗?关于如何使这项工作的任何想法?我的整个方法可能完全错误,这很好。告诉我为什么。:)
谢谢你的帮助。