ASP.NET MVC模型部分验证
2015-01-25 16:10
267 查看
在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形。比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能。用户首先要验证通过验证邮箱(通常是用户名)来获取验证码,然后再进行密码重置。那么此时假设需要4个字段:Email、Password、ConfirmPassword、VerifiCode。那么就需要2个单独的页面中队这一个model进行分步验证了。google了一下,发现了一些有价值的解决方案。为了说明问题,写了一个小的Demo如下:
ViewModel:
View Code
做法和上面的方案2一样,就是通过过滤器移除掉不需要验证的字段。它们其实是一样的。只不过方案2是通过ValueProvider值提供程序来检索对应的字段是否有值来实现筛选的。
当然期待希望能有更多滴解决办法!!!
ViewModel:
//参看链接:http://www.codeproject.com/Articles/293894/Partial-Validation-with-Data-Annotations-in-ASP-NE public class IgnoreModelErrorsAttribute : ActionFilterAttribute { private string keysString; public IgnoreModelErrorsAttribute(string keys) : base() { this.keysString = keys; } public override void OnActionExecuting(ActionExecutingContext filterContext) { ModelStateDictionary modelState = filterContext.Controller.ViewData.ModelState; string[] keyPatterns = keysString.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < keyPatterns.Length; i++) { string keyPattern = keyPatterns[i] .Trim() .Replace(@".", @"\.") .Replace(@"[", @"\[") .Replace(@"]", @"\]") .Replace(@"\[\]", @"\[[0-9]+\]") .Replace(@"*", @"[A-Za-z0-9]+"); IEnumerable<string> matchingKeys = modelState.Keys.Where(x => System.Text.RegularExpressions.Regex.IsMatch(x, keyPattern)); foreach (string matchingKey in matchingKeys) modelState[matchingKey].Errors.Clear(); } } }
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 模型验证注解,表单提交