2012-04-17 164 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