在一个批量编辑表单页面上,我显示了大约 50 个也具有一些布尔属性的对象。控制器从编辑页面接收包含所有值的 FormCollection。
public void _EditAll(FormCollection c)
{
int i = 0;
if (ModelState.IsValid)
{
var arrId = c.GetValues("channel.ID");
var arrName = c.GetValues("channel.displayedName");
var arrCheckbox = c.GetValues("channel.isActive");
for (i = 0; i < arrId.Count(); i++)
{
Channel chan = db.Channels.Find(Convert.ToInt32(arrId[i]));
chan.displayedName = arrName[i];
chan.isActive = Convert.ToBoolean(arrCheckbox[i]);
db.Entry(chan).State = EntityState.Modified;
}
db.SaveChanges();
}
}
现在,对于复选框,MVC 在表单上创建隐藏输入(否则“假”无法回发)。在控制器中,当收到 FormCollection 时,这会导致我收到一个 say 数组
- 50个身份证,
- 50个名字和..
- 复选框有 71 个左右的值,
因为隐藏的复选框与可见的复选框具有相同的名称。
处理该问题并获得复选框的正确值的好方法是什么?