代码改变世界

【原创】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;)

本博客文章若非标记转载,均为原创,转载请注明出处~