ASP.NET CustomValidator 控件的用法
作者:ade 日期:2011-04-20
ASP.NET 验证控件具有在客户端和服务器端均进行验证的能力. 而在定义 CustomValidator 控件的时候,
许多开发者往往只写其中一端的验证代码, 这样做有比较大的弊端.
如果用JavaScript等脚本语言只写客户端验证代码, 那么容易被人绕过验证直接提交数据.
如果只写服务器端验证代码, 则效率比较低, 用户使用体验不好.
所以正确的做法是两个验证代码都要写.
方法举例如下
假设验证一个 ID 为 PublishYear 的 TextBox 控件. 我们先写客户端代码:
<script language="javascript" type="text/javascript">
function checkForm(val, args) {
if (args.Value == "") {
args.IsValid = false;
alert("vtimes.net提醒:请输入正确的年份");
}
}
</script>
从工具箱拖入一个 CustomValidator, 设置其 ClientValidationFunction 为 checkForm,
设置 ValidateEmptyText 为 true.
在该控件的属性窗口找到事件窗口, 双击 servervalidate 后的空白, 自动产生服务器端验证函数
代码如下:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (PublishYear.Text.Equals(""))
{
//Label1.Text = "发表年份不可为空www.vitimes.net,www.historycreator.com";
args.IsValid = false;
}
}
最后生成的 CustomValidator 标记如下:
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage="CustomValidator" ClientValidationFunction="checkForm"
ControlToValidate="PublishYear"
onservervalidate="CustomValidator1_ServerValidate" ValidateEmptyText="True"></asp:CustomValidator>
运行即可.
注1,该程序运行出来需要 CustomValidator 的属性 ValidateEmptyText 设置为 true.
注2,本文试验使用 .NET Framework 版本为3.5.