Asp.Net MVC TryUpdateModel使用说明
修改功能每个网站里都有,也有很多写法
写法1:要修改的字段刚好等于表中的字段
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(admin model) { if (ModelState.IsValid) { adminBLL bll = new adminBLL(); bll.Update(model); return RedirectToAction("Index"); } return View(model); }
写法2:只修改部分字段(表中有十几个字段)
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(admin vmodel) { if (ModelState.IsValid) { adminBLL bll = new adminBLL(); admin model = bll.Find(vmodel.ID); model.name = vmodel.name; model.password = vmodel.password; bll.Update(model); return RedirectToAction("Index"); } return View(vmodel); }
//如果要修改的字段多是话这些就很麻烦
写法3:TryUpdateModel
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(int id, FormCollection FromValue) { adminBLL bll = new adminBLL(); admin model = bll.Find(id); if (TryUpdateModel(model, FromValue.AllKeys) && ModelState.IsValid) { bll.Update(model); return RedirectToAction("Index"); } return View(); }
TryUpdateModel (model)默认将view页面上form表单中的字段与model字段匹配,如果相同则把表单中的值更新到model上
利用 FormCollection 来接收 View 传来的资料来做字段更新,所以可以改成以下写法:
TryUpdateModel(model, FromValue.AllKeys) && ModelState.IsValid
还可以排除 FormCollection 来接收 View 传来的资料的某些字段
TryUpdateModel(model, "", FromValue.AllKeys, new string[] { "字段1" })
这样就可以排除“字段1”
//成功一定有方法,失败一定有原因。