asp.net mvc3 数据验证(四)—Remote验证的一个注意事项

简介: 原文:asp.net mvc3 数据验证(四)—Remote验证的一个注意事项        前几篇把asp.net mvc3 中基于Model的主要数据验证的方法都已经讲完了,本节纯粹只是讲一个我曾经遇到的问题,因为和数据验证相关,所以就放在了这系列的文章中。
原文: asp.net mvc3 数据验证(四)—Remote验证的一个注意事项

        前几篇把asp.net mvc3 中基于Model的主要数据验证的方法都已经讲完了,本节纯粹只是讲一个我曾经遇到的问题,因为和数据验证相关,所以就放在了这系列的文章中。
        经过前几篇文章的分享,大家应该觉得asp.net 自带的Remote远程数据注解比较好用,但是我在实际使用中却遇到了问题。
        首先,一般来说对于一个属性的验证可能需要不止一个的远程验证,比如对于用户名来说,我们需要对于它的长度做一些限制,这个可以通过StringLength特性来解决;同时还需要验证用户名不能重复,这个就需要通过Remote特性来解决。
        现在需要再添加一个验证,那就是用户名不能包含违禁词。比如......(比较敏感,就不写了。。。^_^),违禁词保存在数据库中。刚开始我觉得这个也简单,再加个Remote验证不就解决了么。。。童鞋们,有时候我们觉得很简单就能办到的事情,如果不做,永远不知道你能不能办到。所以建议大家,遇到事情不要拖拉,尽快做好。
        噼里啪啦,很快就把验证的方法写好了,然后加到Model中一看傻眼了。。。
        原来不支持同一个属性有两个Remote验证。。。
 
        这个时候该怎么办呢,尝试将两个验证写在同一个Remote中,但是这样的话只能显示一个ErrorMessage,被否决。(但是的我以为Remote特性的方法只能返回一个bool值,不能返回ErrorMessage)。
        然后我就在cnblogs、csdn以及百度知道发帖询问,大多数的回答没有说到重点。
 
        由于时间紧(也不是因为时间紧,总不能让这么一个小验证跟经理说搞个一整天吧),所以就自己写了个自定义验证解决。
        事情虽然是解决了,但是总觉得微软设计的时候总不会这么傻叉,连这点都没想到。但是查资料也没查到啥,之后就一直放着。
 
        直到昨天,csdn上的一哥们说Remote验证可以自定义ErrorMessage,我才恍然大悟,我原来一直以为只能返回true或false的。
        接下来就很简单了,花了5分钟的时间找到了返回ErrorMessage的方法,原来验证为false时不用返回bool值,可以直接返回ErrorMessage。方法如下:
        public JsonResult CheckUserName(string userName)
        {
            if (IsUniqueName(userName) && IsForbiddenName(userName))
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }
            else if (!IsUniqueName(userName))
            {
                return Json("用户名不唯一!", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("用户名不包含违禁词!", JsonRequestBehavior.AllowGet);
            }
        }

 

        这样就可以完美解决需要多个Remote验证的问题了。
        虽然问题解决了,但是仍然要吐槽下微软,干嘛不能多个Remote验证,吧这么多的逻辑都放在一个方法中容易绕晕额。。。
 
        虽然这是个小问题,但是从中至少得到了两点启示:
            1、看到的问题不可怕,可怕的是有问题但是我们没有看到;
            2、很多事情,只要你坚持,总会等到柳暗花明的一天。
 
  asp.net mvc3 数据验证的前几篇文章: asp.net mvc3 的数据验证(一)
                     asp.net mvc3 数据验证(二)——错误信息的自定义及其本地化
                     asp.net mvc3 数据验证(三)—自定义数据注解
目录
相关文章
|
1月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
94 0
|
1月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
37 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
155 5
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
1月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
|
1月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
51 0
|
1月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
135 0
|
1月前
|
前端开发
net core mvc获取IP地址和IP所在地(其实是百度的)
net core mvc获取IP地址和IP所在地(其实是百度的)
39 0
|
7月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
60 0
|
10月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
136 0