MVC 验证规则扩展(当RoleID 属性值为A,B 时,Email 属性必填)
- public class RoleRequiredAttribute : ValidationAttribute, IClientValidatable
- {
- public string RoleIDS{ get; set; }
- public string OtherProperty { get; set; }
- public RoleRequiredAttribute(string roleIDs, string otherProperty)
- {
- RoleIDS = roleIDs;
- OtherProperty = otherProperty;
- }
- protected override ValidationResult IsValid(object value, ValidationContext validationContext)
- {
- var property = validationContext.ObjectType.GetProperty(OtherProperty);
- if (property == null)
- {
- return new ValidationResult(string.Format(CultureInfo.CurrentCulture, "{0} 不存在", OtherProperty));
- }
- var otherValue = property.GetValue(validationContext.ObjectInstance, null);
- if (RoleIDS.Replace(",",",").Trim(',').Split(',').Contains(otherValue) && value == null)
- {
- return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
- }
- return null;
- }
- public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
- {
- var rule = new ModelClientValidationRule
- {
- ValidationType = "role",
- ErrorMessage = FormatErrorMessage(metadata.GetDisplayName())
- };
- rule.ValidationParameters["property"] = Newtonsoft.Json.JsonConvert.SerializeObject(new { key = OtherProperty, val = RoleIDS });
- yield return rule;
- }
- }
- (function ($) {
- $.validator.addMethod("role", function (value, element, param) {
- if (value.replace(/(^s*)|(s*$)/g, "").length != 0) {
- return true;
- }
- else {
- var obj = JSON.parse(param);
- var kv = $("#" + obj["key"]).val();
- if (obj["val"].indexOf(kv) != -1) {
- return false;
- }
- else {
- return true;
- }
- }
- return false;
- });
- $.validator.unobtrusive.adapters.addSingleVal("role", "property");
- )(jQuery));
- public class MyModel
- {
- [RoleRequired("A,B", "RoleID", ErrorMessage = "必填")]
- public string Email { get; set; }
- public string RoleID{ get; set; }
- }
MVC 验证规则扩展(当RoleID 属性值为A,B 时,Email 属性必填)的更多相关文章
- Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...
- easyui form提交时验证必填,打开时不显示必填提示
给textbox添加required:true属性后,打开页面时整个表单都是红的,需要将其设置为提交时再验证. 解决方法:通过textbox的novalidate属性来控制是否开启验证 <inp ...
- js对象属性名和属性值生成新数组时都作为属性值
const obj = { id:1, name:'zhangsan', age:18 } const arr = []; Object.getOwnPropertyNames(obj).forEac ...
- bootstrapValidator常用验证规则总结
bootstrapValidator常用验证规则总结 一 .bootstrapValidator引入 在使用bootstrapValidator前我们需要引入bootstrap和bootstrapVa ...
- MVC验证05-自定义验证规则、验证2个属性值不等
原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证 M ...
- MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息
Asp.net MVC中的提供非常简单易用的数据验证解决方案. 通过System.ComponentModel.DataAnnotations提供的很多的验证规则(Required, StringLe ...
- EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证
之前的Code First系列文章已经演示了如何使用Fluent API和Data Annotation的方式配置实体的属性,比如配置Destination类的Name属性长度不大于50等.本文介绍E ...
- Yii CModel中rules验证规则[转]
array( array(‘username’, ‘required’), array(‘username’, ‘length’, ‘min’=>3, ‘max’=>12), array( ...
- jQuery.validator 验证规则详解
前言:jQuery.validator是一款非常不错的表单验证插件,验证方式非常简单方便,它还对HTML5做了兼容处理,了解了验证规则,就基本掌握了它的使用,下面就让我一一道来 jQuery.vali ...
随机推荐
- php 跨域请求
执行要在跨域请求的服务器端对应的代码上增加下面的代码 <?php namespace Admin\Controller; // 指定允许跨域访问 header('Access-Control-A ...
- 刚下了VS2010不会用,求大神指点迷津
刚下了VS2010不会用,求大神指点迷津 [菌菌][C语言MOOC]第七周计算分数精确值(10分) thinkphp3.1Calltoamemberfunctionget()onnull java提示 ...
- waitGroup的使用
package main import ( "fmt" "sync" "time" ) func main() { var wg sync. ...
- JS 最简单数组去重
,,,,])) // 再把set转变成array console.log(newArr) // [1,2,3,4]
- redis cluster最简配置
redis cluster最简配置 master配置如下:(默认6379端口) bind 127.0.0.1 port 6379 timeout 0 databases 16 Master的redis ...
- Android作业
一.设置跑马灯功能 使用滚动字幕显示标题“请选择你喜欢哪种花” <?xml version="1.0" encoding="utf-8"?>&l ...
- node,npm,vue的全局升级
pc环境:windows 10, OS:win32, Arch:x64 1.升级node.js到最新 ⑴.别人成功的方法: . 第一步 npm -g install n //此处可以加上 --forc ...
- python day31--网络编程,tcp,udp的指令,及黏包
一.TCP tcp中遇到黏包会让数据传输完. server import socket sk=socket.socket() sk.bind(('127.0.0.1',8090)) sk.listen ...
- linux 保存git的账号密码
今天在弄jenkins一建发版,遇到了git下载每次都要输入账号密码,所以百度一下,使用一下方法,搞定 一.通过文件方式 1.在~/下, touch创建文件 .git-credentials, 用vi ...
- word中编辑论文公式对齐问题
这里只说在word中编辑公式时,公式居中,编号右对齐的情况. 在编辑公式时,我平时就是右对齐,然后通过敲击空格键进行公式的居中,然而这样并不美观.所以接下来学习一下: 1)首先打开视图-->标尺 ...