MVC ValidationAttribute 服务器端自定义验证
MVC ValidationAttribute 服务器端自定义验证
客户端验证
上文只说了客户端的自定义验证,这样对于用户的输入还是不够可靠,用户完全可以绕过我们定义的客户端验证。所以仅有客户端的验证还是不够的,我们还需要在服务器端进行再次验证。
ValidationAttribute
服务端验证要继承自ValidationAttribute,并重写IsValid虚方法来自定义自己的验证规则,ValidationAttribute声明大致如下
| public abstract class ValidationAttribute : Attribute    {       //验证失败提示消息       public virtual string FormatErrorMessage(string name);              //自定义验证一       protected virtual ValidationResult IsValid(object value, ValidationContext validationContext);        //自定义验证二        public virtual bool IsValid(object value);    } | 
UrlAttribute
UrlAttribute 是用来验证Url格式的有效性,这个特性在NET Framework 4.5已经自带实现。我们就参考着做个例子。
| publicclassLink    {        [Required]        [DisplayName("文字")]        publicstringText { get; set; }        [Url]        [Required]        [DisplayName("Url链接")]        publicstringUrl { get; set; }    }    publicclassUrlAttribute : ValidationAttribute,IClientValidatable    {        publicoverridestringFormatErrorMessage(stringname)        {            returnstring.Format("{0}格式有误", name);        }        publicUrlAttribute()        {        }        publicoverrideboolIsValid(objectvalue)        {            vartext = value asstring;            Uri uri;            return(!string.IsNullOrWhiteSpace(text) && Uri.TryCreate(text, UriKind.Absolute, outuri));        }        publicIEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)        {            varvalidationRule = newModelClientValidationRule            {                ErrorMessage = FormatErrorMessage(metadata.DisplayName),                ValidationType = "url",            };            yieldreturnvalidationRule;        }    } | 
UrlAttribute实现服务端和客户端的验证,客户端我们只是为input控件添加data-val-url属性,但他的客户端验证还是有效的,因为validate这个插件已经实现它的js验证脚本。

我们将ValidationType名字改下取消客户端验证,提交到服务端进行验证


MVC ValidationAttribute 服务器端自定义验证的更多相关文章
- ASP.NET MVC ValidationAttribute 服务器端自定义验证
		自己开发的公众号,可以领取淘宝内部优惠券 客户端验证 上文只说了客户端的自定义验证,这样对于用户的输入还是不够可靠,用户完全可以绕过我们定义的客户端验证.所以仅有客户端的验证还是不够的,我们还需要在服 ... 
- ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
		ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需 要将相应的ValidationAttr ... 
- asp.net mvc 中的自定义验证(Custom Validation Attribute)
		前言 
- mvc 实体类 自定义验证特性
		mvc 实体类验证的时候 如果有多个验证特性需要在属性上层叠很多个验证特性,显得属性特别臃肿并且也不够直观,极大地影响我使用它的兴趣,所以我想自定义一个验证特性,然后将所有需要验证的情形全部放在一个特 ... 
- MultipleRegularExpressionAttribute MVC中扩展自定义验证规则
		好久都没有写博客,最近工作中没有什么可写的,公司的项目是以业务为重,技术含量实在不咋的.这次sprint中有一个要求就是password必须一些规则,比如给你一些正则表达式必须满足几个,直接看效果吧 ... 
- MVC 实体字段自定义验证
		[Remote("ActionName", "ControllerName", AdditionalFields = "ID", Error ... 
- Asp.net MVC验证那些事(4)-- 自定义验证特性
		在项目的实际使用中,MVC默认提供的Validation Attribute往往不够用,难以应付现实中复杂多变的验证需求.比如, 在注册用户的过程中,往往需要用户勾选”免责声明”,这个checkbox ... 
- ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】
		提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了 ... 
- ASP.NET MVC 3 使用Model自定义验证的样式
		1.修改jquery.validate.unobtrusive.js 将onError方法修改 //修改的部分 //////////////////////////////////////////// ... 
随机推荐
- ExtJs在disabled和readOnly美学分析
			ExtJs中disabled和readOnly美观度的分析 ExtJs中.假设设置输入框为仅仅读属性,一般第一考虑的都是readonly=true 它的效果和正常输入框一样,可是不同意输入: 然而,它 ... 
- JavaScript循环之for/in循环
			今天学到了JavaScript的语句篇.同其他常见编程语言如C.Java等一样,JavaScript中的语句包含:①表达式语句②复合语句和空语句③声明语句④条件语句⑤循环语句⑥跳转语句,当然JavaS ... 
- Java数据结构系列——简单排序:泡、选择、直接进入
			package SimpleSort; public class SimpleSort { /** * 冒泡排序:每次循环过程中.小的排在后面的数会像水中的 * 气泡一样慢慢往上冒,所以命名为冒泡排序 ... 
- 《代码的第一行——Android》封面诞生
			<代码的第一行--Android>已经上市近一个月,现在的情况是相当不错的销售,也特别感谢众多朋友的支持. 其实一本好书,假设你想卖.除了给予外力所要求的内容.封面设计是至关重要的,这本书 ... 
- android ndk通过遍历和删除文件
			在做移动开发过程,难免有些本地文件管理操作.例如,很常见app随着微博.微信要清除缓存功能,此功能是走app文件夹.然后删除所有缓存文件.使用java的File类能够实现本地文件遍历及删 ... 
- java学习笔记1——window7下JDK环境变量配置图解
			1. 首先下载Java安装工具包 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.ht ... 
- 【百度地图API】如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅、加油站、宾馆、大厦等
			原文:[百度地图API]如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅.加油站.宾馆.大厦等 摘要: 在LBS上有这样一个常用的功能,查找附近所有的关键点(POI点,比如标志 ... 
- 【百度地图API】当地址解析失败时,如何调用search方法查找地址
			原文:[百度地图API]当地址解析失败时,如何调用search方法查找地址 有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”. --------------------- ... 
- POI导出Excel文档通用工具方法
			import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; imp ... 
- Sample Page
			This is an example page. It's different from a blog post because it will stay in one place and will ... 
