2012-04-17 131 views
1

自定义验证程序具有名为ClientValidationFunction和ControlToValidate的属性。功能是这样的:ASP.NET-什么是args.Value类型

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

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

回答

1

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

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

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


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

1

编号:ASP.NET Validation in Depth

两个参数传递到您的客户端功能,对应于 传递给服务器函数的参数。第一个是 客户端验证器元素,第二个是服务器上的参数 的等效项。它有两个属性:值,其中 包含要验证的输入和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 PropertyUsing the CustomValidator Control