现在的位置: 主页 > 新闻中心 > 文章正文

ASP.NET MVC ValidationAttribute 服务器端自定义验证

作者:陕西芙爱尔婚庆礼仪服务有限公司 来源:www.fair521.com 未知发布时间:2017-09-07 13:31:06
ASP.NET 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已经自带实现。我们就参考着做个例子。

public class Link

{

[Required]

[DisplayName("文字")]

public string Text { get; set; }

[Url]

[Required]

[DisplayName("Url链接")]

public string Url { get; set; }

}

public class UrlAttribute : ValidationAttribute,IClientValidatable

{

public override string FormatErrorMessage(string name)

{

return string.Format("{0}格式有误", name);

}

public UrlAttribute()

{

}

public override bool IsValid(object value)

{

var text = value as string;

Uri uri;

return (!string.IsNullOrWhiteSpace(text) && Uri.TryCreate(text, UriKind.Absolute, out uri));

}

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)

{

var validationRule = new ModelClientValidationRule

{

ErrorMessage = FormatErrorMessage(metadata.DisplayName),

ValidationType = "url",

};

yield return validationRule;

}

}

UrlAttribute实现服务端和客户端的验证,站群软件,客户端我们只是为input控件添加data-val-url属性,但他的客户端验证还是有效的,因为validate这个插件已经实现它的js验证脚本。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:鄂州SEO http://ezhou.raoyu.net

上一篇:微信运营实操:如何让粉丝主动加你? 下一篇:最后一页