我将这两个类用作我的视图模型:
public class CreateVm
{
public int Id {get; set;}
public string Name {get; set;}
public ICollection<ItemVm> Items {get; set;}
}
public class ItemVm
{
public int Id {get; set;}
public string Name {get; set;}
public int Quantity {get; set;}
}
然后我有一个看起来像这样的视图,为简单起见删除了一些元素:
@model CreateVm
@Html.EditorFor(m => m.Id)
@Html.EditorFor(m => m.Name)
<input type="button" id="myButton">
<table id="myTable">
<thead></thead>
<tbody></tbody>
<table>
和一个javascript文件:
("#myButton").click(function(){
$.ajax({
url: "/Item/AddItem/",
data: 'html',
success: function(data){
$("#myTable").append(data);
}
});
});
我的控制器基本上只是返回一个包含表格行的局部视图:
public ItemController : Controller
{
public ActionResult AddItem()
{
var tableRow = new ItemVm();
return PartialView("_AddItem", tableRow);
}
}
局部视图:
@model ItemVm
@EditorFor(m => m, null, "Items")
编辑器模板:
@model ItemVm
<tr>
<td>@Html.EditorFor(m => m.Name)</td>
<td>@Html.EditorFor(m => m.Quantity)</td>
</tr>
现在的问题是,这并没有为mvc绑定到工作生成所需的输入,即<input name="[0].Name">
,我怎样才能让编辑器模板(或其他一些元素)生成这些类型的输入,以便在发布表单时自动绑定到CreateVm