ASP.NET MVC编辑多个子记录的示例

gfr*_*zle 23 asp.net-mvc master-detail

有没有人知道MVC视图的任何示例或教程,它们在一个表单上显示父/子数据,并允许所有子记录可编辑?

例如,假设我有一张人的桌子,另一张包含他们拥有的车辆.一个表格,我想展示给定人的每辆车,并在出现错误时使数据元素可编辑(即车牌号,车颜色等).我不想为每辆车跳转到单独的编辑表格.

到目前为止,我的尝试已经让我能够显示数据,但我无法将其发回给控制器.我试图尽可能我可以缩小问题在这里,但我仍然没有得到它,我觉得更广阔的例子可能是为了.有任何想法吗?

Çağ*_*kin 27

你可以尝试这样的事情.

假设你有这个对象:

public class Vehicle
{
    public int VehicleID { get; set; }
    public string LicencePlate { get; set; }
    public string Color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是您用于编辑车辆详细信息的控制器操作(您将在何处发布表单):

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditVehicles(int Owner, Vehicle[] vehicles)
{
    //manipulate the data, then return back to the list
    return RedirectToAction("YourAction");
}
Run Code Online (Sandbox Code Playgroud)

然后你应该这样设置你的表单:

<!--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>
Run Code Online (Sandbox Code Playgroud)

这将有助于DefaultModelBinder将表单数据正确绑定到控制器中的模型.因此,Response.Write(vehicles[1].Color);在您的控制器上,将打印"蓝色".

这是一个非常简单的例子,但我相信你明白了.有关将表单绑定到数组,列表,集合,词典的更多示例,请查看此处.