我有一个包含对象列表的视图模型。
将列表绑定到 WebGrid 很好,并且可以正确显示所有数据。
这些对象有一个布尔值,我希望用户通过选择与 WebGrid 中的每条记录一起显示的复选框来更改。当用户选中/取消选中各种复选框然后单击更新按钮时,我希望能够保存对对象的更改。
更新证明了 MVC 和 Razor 的正确“A 痛”。
如何将这些更改发送回控制器?有人可以建议吗?有样品吗?
更新:
在给每个复选框一个名称和 ID 后,我已经能够将整个表单传递回控制器。该值设置为 item.Id 并且仅在实际选中复选框时才在表单的属性中找到。
所以在控制器中,我这样做:
public ActionResult Assign(FormCollection form)
{
var ch = form.GetValues("itemChk");
foreach (var id in ch)
{
//...Get object using id
//...Call your method
}
return View();
}
ch 是 item.Ids 的字符串数组,只有那些被选中的复选框。通过将 item.Id 作为选中复选框的值返回,我可以在项目本身上分配/设置该值并保存/更新它。
接下来尝试获取所有返回值的复选框。还可以在 WebGrid 中的每一行的文本框中尝试类似的方法来处理返回值。
这是让我沿着这条路走下去的链接。