0

任何人都知道如何从Controller中调用与Html.EditorFor()等效的函数?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]); 
} 

除了输入命名之外,所有这些工作都很好。缺少的部分是集合前缀,它告诉模型活页夹如何在回发时重新组装模型。在视图方面,您可以指定应该是什么(这是上述EditorFor()调用的"Rows["+j+"]"部分)。

你能给部分视图一个像EditorFor()一样的html字段名称前缀吗?有关如何使这项工作的任何想法?我的整个方法可能完全错误,没关系。告诉我为什么。 :)

感谢您的帮助。

回答

1

我会建议您阅读following blog post,其中详细解释了如何实现您正在寻找的内容。