【原创】Asp.net MVC学习笔记之-基于用途来绑定Model的属性
2011-01-12 15:23 刺客之家 阅读(401) 评论(0) 编辑 收藏 举报今天主要学习了如何基于程序用途,来自定义使用UpdateModel方法时,选取哪些页面上的字段来覆盖Model里的属性,下面是一个编辑页面的例子:
可以看到所有的属性后面,都是1111结尾,下面在Controller获取参数的时候这么写:
可以看到,我们指定了绑定3个属性,title,description,address,也就是说,页面上其他的字段全部无法绑定到Model里
代码
try
{
//UpdateModel(dinner);//使用Controler内置的方法,通过反射来给Dinner对象赋值
UpdateModel(dinner,new string[]{"Title","Description","Address"});//使用属性列表,可以自定义允许绑定给Model的属性,从而更好的控制
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
catch (Exception)
{
ModelState.AddRuleViolations(dinner.GetRuleViolations());
return View(dinner);
}
在监视器里,查看实际绑定的数据
看到了么,除了指定的3个属性以外,其他的属性还保持了原来的状态。
这种方式还有一种写法,就是在Action的传入参数里指定:
public ActionResult Create([Bind(Include="Title,Address")]Dinners dinner)
页面上输入:
后台绑定的结果:
结论:使用该方法,我们可以更灵活的在后台控制哪些属性可以被绑定。
PS:后面还将介绍基于类型的绑定规则。(使用该特性,请在程序中引用名称空间:using System.Web.Mvc;)