当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET MVC ValidationAttribute 服务器端自定义验证

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

2018年09月19日  | 移动技术网IT编程  | 我要评论

医典天术,上海联通网上营业厅,权术论

客户端验证

上文只说了客户端的自定义验证,这样对于用户的输入还是不够可靠,用户完全可以绕过我们定义的客户端验证。所以仅有客户端的验证还是不够的,我们还需要在服务器端进行再次验证。

 

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验证脚本。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网