asp.net core2 mvc 基础教程--Model 验证 Again
时间:2020-07-15
本文章向大家介绍asp.net core2 mvc 基础教程--Model 验证 Again,主要包括asp.net core2 mvc 基础教程--Model 验证 Again使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
自定义验证 Attribute
- Attribute,IModelValidator
示例:ValidUrlAttribute
public class ValidUrlAttribute : Attribute, IModelValidator { public string ErrorMessage { get; set; } public IEnumerable<ModelValidationResult> Validate( ModelValidationContext context) { var url = context.Model as string; if (url != null && Uri.IsWellFormedUriString(url, UriKind.Absolute)) { return Enumerable.Empty<ModelValidationResult>(); } return new List<ModelValidationResult> { new ModelValidationResult(string.Empty, ErrorMessage) }; } }
使用时标注在 ViewModel 等实体类的属性上即可:
[Display(Name = "封面地址")] [Required(ErrorMessage = "{0}是必填项"), MaxLength(200, ErrorMessage = "{0}的长度不可超过{1}")] //[DataType(DataType.Url)] [ValidUrl(ErrorMessage = "这个URL不正确")] public string CoverUrl { get; set; }
远程验证
- [Remote]
- 客户端调用 Action 方法进行验证(前台调用后台验证)
Action 中的方法:
[AcceptVerbs("Get", "Post")] public async Task<IActionResult> CheckRoleExist([Bind("RoleName")]string roleName) { var role = await _roleManager.FindByNameAsync(roleName); if (role != null) return Json("角色已经存在了"); return Json(true); }
标注属性:
public class RoleAddViewModel { [Required] [Display(Name = "角色名称")] [Remote(nameof(RoleController.CheckRoleExist), "Role", ErrorMessage = "角色已存在")] public string RoleName { get; set; } }
注:暂时没找到更优雅的方法获取到 "Role"。
原文地址:https://www.cnblogs.com/cqqinjie/p/13308495.html
- 窃取Facebook用户信息:利用Android同源策略漏洞的恶意应用被发现
- 关于React Native 安卓首屏白屏优化
- 浅谈spring security 403机制一、无权限访问二、匿名访问三、有权限访问原因机制指定AccessDeniedHandler指定error-page情景原因结论
- Python之numpy数组学习(二)
- Intent 属性详解(上)
- 复仇行动:Notepad++官网被圣战组织黑了
- 四大组件的纽带——Intent
- 利用HTC One漏洞破解手机PIN密码
- Android NDk环境配置
- 谷歌再曝Windows8.1漏洞,微软怒了
- Python机器学习的生态系统
- TP-link TL-WR840N系列路由器存在CSRF漏洞,可修改任意配置(含POC测试过程)
- JavaScript严格模式
- 微软修复8个安全漏洞,包括谷歌披露的0day漏洞
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- c++STL容器之vector容器
- c++STL容器之string容器
- AWS(Amazon Linux 2 AMI)在线迁移到腾讯云
- 2020-08-26:裸写算法:树的非递归先序遍历。
- TypeScript手记(一)
- Codeforces Round #665 (Div. 2)
- MONGODB 加索引 大内存 与连锁思维
- 3分钟短文|Laravel 使用like匹配字符串的用法示例
- 3分钟短文|Laravel命令行调用控制器方法,你会几个?
- 3分钟短文 | Laravel 给所有视图追加公共数据
- 为主题用pugjs编写的hexo博客添加网站运行时间
- Qt UDP广播
- Qt文件操作QFile
- 终端shell美化
- Qt CMake GUI项目生成脚本