爱上MVC3系列~使用视图模型的好处及与数据模型之间的赋值问题.doc_第1页
爱上MVC3系列~使用视图模型的好处及与数据模型之间的赋值问题.doc_第2页
爱上MVC3系列~使用视图模型的好处及与数据模型之间的赋值问题.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、开发应用程序有个问题,很多开发者不知如何去使用页面模型,大多数开发者认为为每一个页面去设计一个实体是多余的,所以他们使用数据库实体来代码页面视图模型,事实上,这样做的好处就是节省的代码,但不好的地方是什么呢?我来总结一下吧:方便根据每一种业务逻辑和前台页面表现,去对模型进行特性的设置前台部分与业务层与数据库层可以更加独立,前台页面模型并不依赖于数据库模型可以根据具体业务,去分别设置它们的验证及约束关系好了,上面我说了点不使用viewModel的缺点,事实上,确实是这样的,比如,你的userbase实体,如果它需要提供两种业务,如“登陆”和“注册”,那么它的前台信息展现与验证业务肯定是不相同的,

2、这时,如果使用ViewModel就很容易的解决了这个问题。以下是用户模型的代码片断 1 / 2 / 用户登陆视图模型 3 / 4 public class UserBaseLogOnModel 5 6 Required 7 Display(Name = 用户名) 8 public string Name get; set; 9 Required10 DataType(DataType.Password)11 Display(Name = 密码)12 public string Password get; set; 13 Required14 Display(Name = 真实姓名)15 pub

3、lic string RealName get; set; 16 17 / 18 / 用户注册模型19 / 20 public class UserBaseRegisterModel21 22 Required23 Display(Name = 用户名)24 public string Name get; set; 25 Required26 DataType(DataType.Password)27 Display(Name = 密码)28 public string Password get; set; 29 Required30 DataTyp

4、e(DataType.Password)31 Display(Name = 密码)32 Compare(Password, ErrorMessage = 新密码和确认密码不匹配。)33 public string ConfirmPassword get; set; 34 Required35 Display(Name = 真实姓名)36 public string RealName get; set; 37 Required38 DataType(DataType.EmailAddress)39 Display(Name = 电子邮件)40 public string Email get; s

5、et; 41 Required42 DataType(DataType.PhoneNumber)43 Display(Name = 电话)44 public string Tel get; set; 45 Required46 Display(Name = 证件类型)47 public SelectList IDType get; set; 48 Required49 Display(Name = 证件号码)50 public string IDNumber get; set; 51 有了视图模型,那我们如何去使用它呢,我们以用户登陆为例,来说一下吧:首先,我们定义的ViewModel里的属性

6、,要求和数据模型中的属性名称相同,这样方便进行模型之间的赋值, 用户登陆与用户注册都是与userbase表相关的,所以,在HTTPPost指向的方法时,参数可以就是UserBase类型的,看代码:1 HttpPost2 public ActionResult LogOn(UserBases entity)3 4 而如果它们的属性名称是相同的,表单在进行请求时,可以把属性信息自动填充到参数实例上去,但如果你的模型中包括了导航属性(其它关系表的实例),则需要手动为它进行初始化,如代码:1 HttpPost2 public ActionResult Lo

7、gOn(UserBases entity)3 4 entity.User_Extensions_Extend = new User_Extensions();5 TryUpdateModel(entity.User_Extensions_Extend);/填充模型6 当我们从表单中把数据得到后,要做的是什么呢?“验证”,我们需要知道表单中填写的内容是否是符合我们设定的规范,如果不符合,则返回错误信息。 1 HttpPost 2 public ActionResult LogOn(UserBases entity) 3 4 entity.User_Extensions_Extend = new User_Extensions(); 5 TryUpdateModel(entity.User_Extensions_Extend);/填充模型 6 if (ModelState.IsValid) 7 8 VM = iUserRepository.Login(entity); 9 if (VM.IsComplete)10 return RedirectToAction(Index, Home);11 else12 VM.ToList().ForEach(i = ModelState.AddModelError(, i);13 14 15 return View(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论