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验证脚本。
上一篇: PROE零件怎么测量重量?
下一篇: 库乐队如何裁剪铃声?库乐队裁剪铃声的方法
推荐阅读
-
ASP.NET MVC ValidationAttribute 服务器端自定义验证
-
ASP.NET MVC5网站开发之登录、验证和注销管理员篇1(六)
-
解读ASP.NET 5 & MVC6系列教程(16):自定义View视图文件查找逻辑
-
ASP.NET MVC中异常处理&自定义错误页详析
-
ASP.NET MVC自定义错误页面真的简单吗?
-
asp.net mvc自定义pager封装与优化
-
ASP.NET MVC5验证系列之服务端验证
-
ASP.NET MVC5验证系列之客户端验证
-
ASP.NET MVC5验证系列之Fluent Validation
-
使用asp.net mvc,boostrap及knockout.js开发微信自定义菜单编辑工具(推荐)