ASP.NET MVC模型部分验证
2015-01-25 17:20
260 查看
在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形。比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能。用户首先要验证通过验证邮箱(通常是用户名)来获取验证码,然后再进行密码重置。那么此时假设需要4个字段:Email、Password、ConfirmPassword、VerifiCode。那么就需要2个单独的页面中队这一个model进行分步验证了。google了一下,发现了一些有价值的解决方案。为了说明问题,写了一个小的Demo如下:
ViewModel:
View
Code
2个简单的页面一个验证邮箱、一个验证重置的密码,就不列出。
先来看方案1:
View
Code
当然如果你不想每次都定义一些需要筛选掉的字段的集合。你可以这么做:
View
Code
思路很简单就是从模型中移除不需要验证的元素。
这个方法虽然有效,但是它没有分离应用程序的关注点。当需要忽略的字段一旦很多的时候可能就会变得很繁琐(当然如果需要验证的字段很少,你也可以这么做:ModelState.IsValidField(""))。
再来看方案2:
View
Code
控制器代码:
思路也很简单:就是使用过滤器,在Action执行过程中移除未提供的字段。
最后来看方案3:
View
Code
做法和上面的方案2一样,就是通过过滤器移除掉不需要验证的字段。它们其实是一样的。只不过方案2是通过ValueProvider值提供程序来检索对应的字段是否有值来实现筛选的。
当然期待希望能有更多滴解决办法!!!
ViewModel:
View
Code
2个简单的页面一个验证邮箱、一个验证重置的密码,就不列出。
先来看方案1:
View
Code
当然如果你不想每次都定义一些需要筛选掉的字段的集合。你可以这么做:
View
Code
思路很简单就是从模型中移除不需要验证的元素。
这个方法虽然有效,但是它没有分离应用程序的关注点。当需要忽略的字段一旦很多的时候可能就会变得很繁琐(当然如果需要验证的字段很少,你也可以这么做:ModelState.IsValidField(""))。
再来看方案2:
View
Code
控制器代码:
思路也很简单:就是使用过滤器,在Action执行过程中移除未提供的字段。
最后来看方案3:
View
Code
做法和上面的方案2一样,就是通过过滤器移除掉不需要验证的字段。它们其实是一样的。只不过方案2是通过ValueProvider值提供程序来检索对应的字段是否有值来实现筛选的。
当然期待希望能有更多滴解决办法!!!
相关文章推荐
- ASP.NET MVC模型部分验证
- ASP.NET MVC Music Store教程(6):使用数据注释为模型进行验证
- ASP.NET MVC(模型(Model),视图(View)和控制Controller)实践:实现身份验证权限管理
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
- Asp.Net MVC 模型验证详解-实现客户端、服务端双重验证
- ASP.NET MVC 4 (十) 模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 2博客系列之二:模型验证
- ASP.NET MVC 中的模型和验证
- asp.net mvc 3.0详细笔记__17__使用 DataAnnotations 进行模型验证
- 模型验证组件 FluentValidation 在 ASP.NET MVC 3 下的使用篇
- ASP.NET MVC 3 Model【通过一简单实例一步一步的介绍】【续Model验证部分】
- Asp.net MVC验证那些事(1)-- 介绍和验证规则使用----[转]--[并修改了部分内容]
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 4 (十) 模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 2博客系列之二:模型验证
- (转)ASP.NET MVC 中模型验证组件——FluentValidation
- ASP.NET MVC 2 模型验证
- asp.net mvc 模型验证注解,表单提交