我正在使用asp mvc应用程序,并面临以下问题: 我有一个与相应模型有关的视图。模型的一个属性是IEnumerable。我将它呈现如下:
<div id="DetailsTemplates">
@for (int i = 0; i < Model.Filter.itemDetails.Count; i++)
{
@Html.EditorFor(m => m.Filter.itemDetails[i], "ItemDetailsUserControl");
}
</div>
和ItemDetailsUserControl看起来像这样:
<div>
<table >
<tr>
<td>
@Html.TextBoxFor(model => model.ID, new {id = "id"})
</td>
<td >
@Html.TextBoxFor(model => model.Code, new {id = "code"})
</td>
<tr />
</table>
</div>
现在,我的视图中有2个按钮:搜索按钮,负责发布包含所有输入的整个表单,并添加按钮,将另一个项目添加到模型的Ienumerable集合中(并且应该添加另一个模板用户控件)。
我的添加按钮代码如下:
$(".addButton").click(function (event) {
var a = $("#FilterForm").serialize();
event.preventDefault();
$.ajax({
url: '@Url.Action("AddBlankItemTemplate")',
data: $("#FilterForm").serialize()
}).success(function(partialView) {
$('#DetailsTemplates').append(partialView);
});
});
和控制器中的操作:
public ActionResult AddBlankItemTemplate(TaxCalculationFilterModel model)
{
var newItem = new DetailsDTO()
{
ID = "",
Code = 0
};
model.Filter.itemDetails.Add(newItem);
return PartialView("~/Views/Home/EditorTemplates/DetailsUserControl.cshtml", newItem);
}
搜索按钮只是发布包含所有输入/
的表单现在,我可以看到每次点击添加按钮都会添加我想要的模板。 然后我填写数据,然后单击搜索按钮。 对于这两个动作,AddBlankItemTemplate和搜索动作,IEnumerable的模型属性只包含1.我可以理解为什么,我想添加的模板和模型iteself之间没有关系。我试着按照这篇文章没有成功: http://blogs.interknowlogy.com/2014/08/01/mvc-series-part-1-dynamically-adding-items-part-1/
帮助:)