请问有没有关于MVC视图的例子或教程,可以在一个表单中显示父子数据,并允许所有子记录可编辑?
例如,假设我有一个人员表和一个包含他们拥有的车辆的表。在一个表单中,我想为给定的人员显示每辆车,并使数据元素可编辑(例如车牌号码、车身颜色等),以便更正错误。我不想为每辆车跳转到单独的编辑表单。
到目前为止,我的尝试已经使我能够显示数据,但是我无法将其提交回控制器。我已经尽可能缩小了问题的范围(链接),但我仍然不能解决问题,因此我认为需要更广泛的示例。有什么想法吗?
请问有没有关于MVC视图的例子或教程,可以在一个表单中显示父子数据,并允许所有子记录可编辑?
例如,假设我有一个人员表和一个包含他们拥有的车辆的表。在一个表单中,我想为给定的人员显示每辆车,并使数据元素可编辑(例如车牌号码、车身颜色等),以便更正错误。我不想为每辆车跳转到单独的编辑表单。
到目前为止,我的尝试已经使我能够显示数据,但是我无法将其提交回控制器。我已经尽可能缩小了问题的范围(链接),但我仍然不能解决问题,因此我认为需要更广泛的示例。有什么想法吗?
public class Vehicle
{
public int VehicleID { get; set; }
public string LicencePlate { get; set; }
public string Color { get; set; }
}
这是你的控制器操作,你将使用它来编辑车辆详细信息(在此处发布表单):
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditVehicles(int Owner, Vehicle[] vehicles)
{
//manipulate the data, then return back to the list
return RedirectToAction("YourAction");
}
那么你应该这样设置表单:
<!--have a form for each person, listing their vehicles-->
<form action="/EditVehicles" method="post">
<input type="hidden" name="Owner" value="25" />
<input type="hidden" name="Vehicles[0].VehicleID" value="10" />
<input type="text" name="Vehicles[0].LicencePlate" value="111-111" />
<input type="text" name="Vehicles[0].Color" value="Red" />
<input type="hidden" name="Vehicles[1].VehicleID" value="20" />
<input type="text" name="Vehicles[1].LicencePlate" value="222-222" />
<input type="text" name="Vehicles[1].Color" value="Blue" />
<input type="submit" value="Edit" />
</form>
这将帮助DefaultModelBinder在控制器中正确地绑定表单数据到您的模型。因此,您的控制器上的Response.Write(vehicles[1].Color);
会打印出"Blue"。
这是一个非常简单的例子,但我相信你已经明白了。如果想要更多关于绑定表单到数组、列表、集合、字典的例子,请查看这里。
我认为你可以通过使用AJAX提交来解决这个问题。每当用户点击提交按钮时,你可以钩入该事件,创建一个JSON数组以持久化所需的内容并将其发送过去。
当然,另一种方法是从POST操作中的“FormCollection”对象获取所有信息。你只需要遍历所有键,解析数据,然后处理它即可。
Html.BeginForm
,并创建了一个复选框,当单击时提交表单。问题是我在操作中得到的模型是一个没有值的新模型? - Shimmy Weitzhandler