医典天术,上海联通网上营业厅,权术论
客户端验证上文只说了客户端的自定义验证,这样对于用户的输入还是不够可靠,用户完全可以绕过我们定义的客户端验证。所以仅有客户端的验证还是不够的,我们还需要在服务器端进行再次验证。
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验证脚本。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论