六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

深入講解 ASP+ 驗證(4)

[摘要]有效性規則和有用的錯誤信息 每個驗證器會顯示有關特定控件特定情況的特定錯誤信息。其中有一些確認是否有效的規則,開始,您作為一個開發人員可能會有些混淆,但是如果要生成對用戶有實際幫助的錯誤信息,這些規...
有效性規則和有用的錯誤信息

每個驗證器會顯示有關特定控件特定情況的特定錯誤信息。其中有一些確認是否有效的規則,開始,您作為一個開發人員可能會有些混淆,但是如果要生成對用戶有實際幫助的錯誤信息,這些規則是必要的。

所有空的驗證器(除了 RequiredFieldValidator)均會被認為有效。如果某個空值無效,您通常需要一個 RequiredFieldValidator 和一個其它驗證器。您需要這樣做,因為一般情況下,您總是希望對空驗證器和有效性顯示不同的錯誤信息。您也可以使用不明確的信息,例如“您必須輸入一個值,并且該值必須在 1 和 10 之間”。

在輸入字段無法轉換為指定數據類型時使用的另一個特殊規則與 CompareValidator 和 RangeValidator 有關。對指定了 ControlToCompare 的 CompareValidator 進行的有效性評估過程類似如下所述:

如果 ControlToValidate 引用的輸入字段為空,則有效。
如果 ControlToValidate 引用的輸入字段無法轉換成所需數據類型,則無效。
如果 ControlToCompare 引用的輸入字段無法轉換成所需數據類型,則有效。
輸入字段轉換成所需數據類型并進行比較。
第三步看起來有些不符合直覺。之所以這樣評估,是因為如果驗證器同時檢查多個字段的有效性,很難為該驗證器寫出有意義的錯誤信息。應使用一個獨立的驗證器來報告 ControlToCompare 輸入字段中的錯誤情況。RangeValidator 的工作方式類似,具有 maximum 和 minimum 屬性。


Enabled、Visible 和 Display 屬性的作用

驗證器的 Enabled、Visible 和 Display 屬性之間的區別可能不是非常明顯。

Display=None 可以用來指定驗證器不直接顯示任何內容,但是仍然進行評估,仍然影響總體的有效性,并且仍可以將錯誤放在客戶機和服務器上的摘要中。對于客戶端驗證,這些值確定使用可見性樣式特性還是使用顯示樣式特性來打開或關閉驗證器。對于服務器端驗證,Display=Dynamic 表示輸入有效時不顯示任何內容,而 Display=Static 表示顯示一個不換行的空格 (" ")。使用最后一個設置是為了表中只包含驗證器的單元格在有效時,不會折疊成不顯示任何內容。

為什么不只使用 Visible=false 使驗證器不可見呢?在 ASP+ 中,控件的 Visible 屬性有許多含義:Visible=false 的控件根本不會被處理來預顯示或顯示。正是因為這種含義,驗證器的 Visible=false 意味著不僅不會顯示任何內容,而且無法使用。不會對這樣的驗證器進行評估,不會影響頁面的有效性,也不會將錯誤放在摘要中。

Enabled 則為中性。對于大多數情況,Enabled=false 與 Visible=false 的效果完全相同。在 Beta 1 版或更高版本中,存在一個重要的區別:在客戶端驗證中,禁用的驗證器仍會發送到瀏覽器中,但是處于禁用狀態。您可以使用客戶端腳本中的 ValidatorEnable 函數激活該驗證器。

使用 Visible 或 Enabled 控制是否進行驗證時,應注意上述服務器上的事件順序。或者在驗證之前進行更改,或者在更改之后重新驗證。否則,它們的 IsValid 值不會將更改反映到屬性上。


CustomValidator 控件

擴展驗證框架最簡單的方法是使用 CustomValidator 控件。該控件既可以用來執行其它驗證控件無法進行的驗證,也可以執行需要訪問服務器上信息(例如數據庫或 Web 服務)的驗證。

如果添加了只定義一個服務器驗證函數的 CustomValidator,您會注意到,該驗證器并不參與客戶端驗證。當用戶使用 tab 鍵在各字段之間切換時,CustomValidator 不會更新,并且需要往返服務器一次以執行其驗證。如果要使用 CustomValidator 執行不需要任何服務器上信息的檢查,您也可以使用 ClientValidationFunction 屬性讓驗證器完全參與客戶端驗證。假設您提供了一個 ClientValidationFunction,理想情況下,應與服務器驗證處理程序執行完全相同的檢查。但實際上,只是執行該驗證的一部分�?蛻舳蓑炞C函數進行的驗證不要超過在服務器上執行的驗證,因為黑客很容易繞過該驗證函數。

以下是在客戶機和服務器上使用 CustomValidator 的一個簡單示例,只檢查輸入是否是偶數。以下先介紹服務器函數(在 C# 中):

public bool ServerValidation(object source, string value) {
try {
int i = int.FromString(value);
return ((i % 2) == 0);
} catch {
return false;
}
}

以下是該函數在客戶機上的聲明方法,以及一個執行相同檢查的客戶端驗證函數。這通常是 JScript 形式,不過如果您的目標是 Microsoft® Internet Explorer,也可以使用 VBScript® 形式。

<asp:CustomValidator id="customVal2" runat=server
ErrorMessage="數字不可以被 2 除!"
ControlToValidate="txtCustomData"
OnServerValidationFunction=ServerValidation
ClientValidationFunction="CheckEven" /><br>
Data Field : <asp:TextBox id="txtCustomData" runat="server" />
<script language=javascript>
<!--
function CheckEven(source, value) {
var val = parseInt(value, 10);
if (isNaN(val))
return false;
return ((val % 2) == 0);
}
// -->
</script>

以下是使用 CustomValidator 的一些注意事項:

與所有其它驗證控件類似(RequiredFieldValidator 除外),如果輸入字段為空,則認為 CustomValidator 有效。
如果使用較舊的瀏覽器,或者關閉了客戶端驗證,將無法調用客戶端驗證函數。在定義該函數之前,您不必檢查所用瀏覽器的功能,但是需要確保瀏覽器不會因為定義而造成腳本錯誤。一定要使您的客戶端代碼作為 HTML 注釋,如下例所示。
兩個參數傳遞到您的客戶端函數中,與傳遞給服務器函數的參數對應。第一個是客戶端驗證器元素,第二個是 ControlToValidate 指定的控件值。不過,在客戶機上,您可以選擇不為函數定義參數,這樣也會正常工作。
如果使用 Beta1 版或更高版本,您可以保留 ControlToValidate 為空。在該模式中,服務器函數每次往返總會觸發一次,客戶端函數每次嘗試提交時總會觸發一次。您可以使用該特性來驗證其它方法無法驗證的控件,例如 CheckBoxList 或單獨的單選按鈕。如果條件是基于多個控件,并且您不希望用戶使用 tab 鍵在頁面上各字段之間切換時評估該條件,可以使用該方法。
Beta 1 版或更高版本中的另一個選項是掛接多個控件的 change 事件。方法是加入一些調用客戶端函數 ValidatorHookupControl 的內嵌腳本,如上所述。

哪些控件可以被驗證?

要使控件可以被驗證控件引用,該控件必須具有驗證屬性。所有可以驗證的控件均具有 ValidationPropertyAttribute 屬性,該屬性指明驗證時應讀取的屬性。如果編寫自己的控件,可以通過提供其中一個特性來指定要使用的屬性,從而使該控件參與驗證。

要使驗證可以在客戶端正常進行,該屬性必須與客戶端顯示的 HTML 元素的 value 特性對應。許多復雜的控件(例如 DataGrid 和 Calendar)在客戶端沒有值,只能在服務器上進行驗證。因此,只有最接近 HTML 元素的控件才可以參與驗證。此外,控件必須在客戶端具有單個邏輯值。因此,RadioButtonList 可以被驗證,但是 CheckBoxList 不可以。


到此為止

上述對 ASP+ 驗證的講解可能已經超過了您要了解的內容。盡情享用吧!





主站蜘蛛池模板: 欧美婷婷综合 | 天天干狠狠操 | 日本 欧美 在线 | 日韩激情视频在线 | 色免费视频 | 青青草 久久久 | 青草香蕉视频 | 午夜狠狠操 | 外国成人网在线观看免费视频 | 亚洲高清视频一区 | 亚洲伊人久久精品 | 天堂在线资源网 | 日韩在线手机看片免费看 | 日韩一区二区在线播放 | 五月婷婷深爱 | 青草视频在线观看视频 | 四虎影院观看视频在线观看 | 色综合成人网 | 亚洲精品国产福利片 | 日韩精品国产自在欧美 | 四虎影院久久久 | 天天爱添天天爱添天天爱添 | 深夜福利视频导航 | 午夜激情视频在线观看 | 四虎永久在线精品国产馆v视影院 | 婷婷综合缴情亚洲狠狠图片 | 天天躁日日躁狠狠躁视频下载播二 | 青草视频在线观看视频 | 午夜性色福利视频 | 四虎影视库国产精品一区 | 日本一区视频 | 午夜在线亚洲男人午在线 | 欧洲激情视频 | 午夜视频在线观看182tv | 日韩视频在线免费观看 | 日日插夜夜爽 | 日韩精品一区二区三区中文精品 | 亚洲人成高清 | 午夜免费福利网站 | 揉女胸视频www网站免费观看 | 羞羞漫画在线阅读页面漫画入口页面弹窗无限 |