我想用来自FormCollection的数据填充我的模型。
我传递给页面的视图模型有一个属性,一个汽车列表。
public List<Car> Cars { get; set; }在视图中,我循环遍历每一个,并作为一个表单输出。
@for (int i = 0; i < Model.Cars.Count; i++)
{
<form action="#" id="updateForm-@Model.Cars[i].Id" class="updateForm">
@Html.AntiForgeryToken()
@Html.Hidden("Id", Model.Cars[i].Id)
<div class="row">
<div class="col-md-2 col-sm-4">
@Html.TextBoxFor(m => m.Cars[i].CarName, new { placeholder = "car name", name = "CarName", id = "CarName", @class = "user-friendly-size" })
</div>等等,每个表单都有自己的按钮。
然后使用JQuery进行form.serialise,并将表单数据发送到后端。
[AjaxOnly]
public JsonResult Update(FormCollection form)据我所知,我不能使用模版活页夹。
public JsonResult Update(Car car)因为当表单数据被序列化和发布时,名称会以Cars.Id的形式出现,并且模型绑定器无法绑定。这就是我的理解。
是否有办法以一种简单的方式将FormCollection中的值提取到我的模型中?可能是用反射吗?还是我错了我们可以自动绑定?
发布于 2015-07-10 17:04:02
使用foreach循环并使用您的汽车模型的属性。然后,当发布到Update操作时,您的模型应该绑定:
@foreach (var car in Model.Cars)
{
<form action="#" id="updateForm-@Model.Id" class="updateForm">
@Html.AntiForgeryToken()
@Html.Hidden("Id", car.Id)发布于 2015-07-10 16:40:18
如果您一次只发送一个Car实例,则实际上不需要包括迭代器来呈现表单输入名称,因为每个表单只需要在它们自己的范围内发送输入。
然后,您只需要收到一辆汽车模型,就像您在最初的问题中所述:
public JsonResult Update(Car car) 您只需要确保覆盖助手提供的默认id和名称,就像对CarName输入一样。
https://stackoverflow.com/questions/31345842
复制相似问题