当前位置: 首页 > news >正文

MVC-Model数据注解(三)-Remote验证的一个注意事项

首先,一般来说对于一个属性的验证可能需要不止一个的远程验证,比如对于用户名来说,我们需要对于它的长度做一些限制,这个可以通过StringLength特性来解决;同时还需要验证用户名不能重复,这个就需要通过Remote特性来解决。

        现在需要再添加一个验证,那就是用户名不能包含违禁词。违禁词保存在数据库中。刚开始我觉得这个也简单,再加个Remote验证不就解决了么
        原来 不支持同一个属性有两个Remote验证
        这个时候该怎么办呢,尝试将两个验证写在同一个Remote中,但是这样的话只能显示一个ErrorMessage,被否决。(我以为Remote特性的方法只能返回一个bool值,不能返回ErrorMessage)。
        事实上, Remote验证还可以自定义ErrorMessage,我才恍然大悟,我原来一直以为只能返回 true或false的。
        验证为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验证的问题了。

同时远程验证多个属性 

比如我们想同时远程验证UserName和Email。 我们可以在View model的其中一个属性打上Remote,其它需要Remote验证的属性放在AdditionalFields中列举。

public string UserName { get; set; }

[Remote("CheckUserName", "Validate", AdditionalFields = "UserName", ErrorMessage = "远端验证失败")]    public string Email { get; set; } 

注意: AdditionalFields列举的字段是区分大小写的。

对应控制器远程验证方法:

 

复制代码
  //这里的参数userName,email必须和view model中的属性UserName, Email保持一致,不区分大小写
        public JsonResult CheckUserName(string userName, string email) { bool isValidate = false; //假设让某个username不通过 if (userName != "demo" && email != "abc@qq.com" ) { isValidate = true; } //Remote验证是通过get方式请求的 return Json(isValidate, JsonRequestBehavior.AllowGet); }
复制代码

转载来源:http://www.cnblogs.com/yaosuc/p/4528061.html

转载于:https://www.cnblogs.com/spilledlight/articles/9269615.html

相关文章:

  • Go语言编写的web管理平台生成框架
  • 如何对高管实施股权激励?
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • PhotoShop制作gif动态广告效果示例
  • 怎样轻松将SD卡照片数据恢复
  • [总结型] HADOOP HDFS BALANCER介绍及经验总结
  • 销售财务出身的创业者,占了95%,未来却可能被他打败
  • centos搭建FTP文件服务
  • Odoo 自定义Widgets 基础教程(章节1)
  • 改maven下创建的动态网站依赖的jre版本
  • Linux 服务管理两种方式service和systemctl
  • 渗透测试(theharvester steghide)
  • Gsoap编译
  • springboot启动时可以用到的事件监听
  • 深入浅出 VuePress(一):如何做到在 Markdown 中使用 Vue 语法
  • Android系统模拟器绘制实现概述
  • Apache的基本使用
  • C语言笔记(第一章:C语言编程)
  • ES6简单总结(搭配简单的讲解和小案例)
  • JDK 6和JDK 7中的substring()方法
  • js中forEach回调同异步问题
  • Nacos系列:Nacos的Java SDK使用
  • node学习系列之简单文件上传
  • SOFAMosn配置模型
  • webgl (原生)基础入门指南【一】
  • 使用Gradle第一次构建Java程序
  • 使用Swoole加速Laravel(正式环境中)
  • 我建了一个叫Hello World的项目
  • 最简单的无缝轮播
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # 飞书APP集成平台-数字化落地
  • (¥1011)-(一千零一拾一元整)输出
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (2)STL算法之元素计数
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net 获取url的方法
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 使用反射注册事件
  • .net6 webapi log4net完整配置使用流程
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET的微型Web框架 Nancy
  • .NET多线程执行函数
  • .net访问oracle数据库性能问题
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .stream().map与.stream().flatMap的使用
  • @property @synthesize @dynamic 及相关属性作用探究
  • [20180224]expdp query 写法问题.txt
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [BUUCTF]-Reverse:reverse3解析