1

自定义验证器具有称为 ClientValidationFunction 和 ControlToValidate 的属性。函数是这样的:

function MyValidationFunction(source,args) {
   if(args.Value==......)
}  

我知道这里的“”是 ControlToValidate。但我不明白 args.Value 的类型是什么。什么是价值。当 controltovalidate 是一个文本框时,我知道它是该文本框的文本,但如果该控件是用户控件,它是什么。所以我的问题是要验证的价值是什么,我们可以改变它吗?

4

2 回答 2

1

参考:ASP.NET 深度验证

两个参数被传递到您的客户端函数,对应于传递给服务器函数的参数。第一个是客户端验证器元素,第二个等效于服务器上的参数。它有两个属性,Value 包含要验证的输入和 IsValid,您可以对其进行更新以指示有效性。

function CheckEven(source, args) {
    var val = parseInt(args.Value, 10);
    if (isNaN(val)) {
        args.IsValid = false;
    }
    else {
        args.IsValid = ((val % 2) == 0);
    }
}

您不能更改值,它是只读的。检查erverValidateEventArgs.Value 属性使用 CustomValidator 控件

于 2012-04-17T05:46:18.043 回答
1

显然,对于客户端验证,使用了呈现的 HTML 控件的属性,例如,对于呈现为简单的控件(并且其value属性包含文本框的内容)Value,这是有意义的。如果(自定义)控件由多个 HTML 控件组成,则客户端验证不可行,根据以下知识库文章:TextBox<input type="text">

注意:本文演示了如何扩展日历控件仅用于服务器端验证。为了进行客户端验证,验证控件连接到相应的 HTML 控件的Value属性。因为许多 HTML 控件用于构建日历控件,所以没有一个 HTML 控件包含日历控件的选定值。因此,客户端验证不适用于 Calendar 控件。

顺便说一句,对于服务器端验证,您可以使用ValidationProperty属性来指定使用哪个属性进行验证。


编辑:根据这个 SO question,如果您输出 an<input type="hidden">作为用户控件的第一个控件,这将用于客户端验证。如果您愿意在其中存储实际控制值,这可能是一个有用的解决方法。

于 2012-04-17T05:39:16.567 回答