ASP.NET MVC模型部分验证

在很多情况下,我们为了代码的复用可能会存在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值提供程序来检索对应的字段是否有值来实现筛选的。
当然期待希望能有更多滴解决办法!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值