<ul><li><input type="checkbox" id="trade鲜花水果" name="Trade" value="鲜花水果" /><label for="trade鲜花水果">鲜花水果</label></li> <li><input type="checkbox" id="trade箱包皮具" name="Trade" value="箱包皮具" /><label for="trade箱包皮具">箱包皮具</label></li> <li><input type="checkbox" id="trade鞋类产品" name="Trade" value="鞋类产品" /><label for="trade鞋类产品">鞋类产品</label></li> <li><input type="checkbox" id="trade虚拟物品" name="Trade" value="虚拟物品" /><label for="trade虚拟物品">虚拟物品</label></li> <li><input type="checkbox" id="trade养生保健" name="Trade" value="养生保健" /><label for="trade养生保健">养生保健</label></li> <li><input type="checkbox" id="trade运动器材" name="Trade" value="运动器材" /><label for="trade运动器材">运动器材</label></li> <li><input type="checkbox" id="trade植宠园艺" name="Trade" value="植宠园艺" /><label for="trade植宠园艺">植宠园艺</label></li> <li><input type="checkbox" id="trade钟表眼镜" name="Trade" value="钟表眼镜" /><label for="trade钟表眼镜">钟表眼镜</label></li> <li><input type="checkbox" id="trade珠宝饰品" name="Trade" value="珠宝饰品" /><label for="trade珠宝饰品">珠宝饰品</label></li> </ul>
[HttpPost] public ActionResult Create(Template template) { template.Trade = Request.Form["Trade"]; template.ThemeStyle = Request.Form["ThemeStyle"]; db.Templates.Add(template); db.SaveChanges(); return RedirectToAction("Index"); }
[HttpPost] public ActionResult Edit(int id, FormCollection formValues) { Template template = db.Templates.Find(id); template.Trade = Request.Form["Trade"]; template.ThemeStyle = Request.Form["ThemeStyle"]; TryUpdateModel(template, formValues); db.SaveChanges(); return RedirectToAction("Index"); }
选择多个checkbox提交,Create可以正常存入数据,Edit就只能存入第一个选择Checkbox,调试了日志,Request.Form["Trade"]和formValues.GetValue("Trade").AttemptedValue都可以获取到正常的checkbox值(多个逗号分隔的字符串),但存入数据库里确实就是只有一个值。怎么回事?
TryUpdateModel(template, formValues);放上面就ok了。难道真是顺序的问题?