• 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 数据验证(三)—自定义数据注解

    移步我最优惠网,尽享全网折扣商品。

    PS:我最优惠网是一个汇集京东、天猫、Amazon等知名电商优惠活动和商品的网站,更精明的剁手,从我最优惠开始

  • 相关阅读:
    URL重定向功能与APS.NET的固化功能结合
    How can I share types when generate WebSevice proxies using local paths
    C# Coding Standard Naming Conventions and Style
    VS自动化对象模型
    odac 如何捕捉错误odac 如何捕捉错误
    webbrower应用实例
    webbrower在同一个窗口打开新增窗口
    [DELPHI]$2501錯誤處理
    暴力破解例子
    webbrower连接在新form中显示
  • 原文地址:https://www.cnblogs.com/zhangkai2237/p/2874533.html
Copyright © 2020-2023  润新知