程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET中對表單輸入行有選擇驗證

ASP.NET中對表單輸入行有選擇驗證

編輯:關於ASP.NET

在ASP.NET中,有一系列的驗證控件,可以很方便地驗證用戶輸入的數據是否合法。盡管這些驗證控件十分強大並且容易使用,但它們有一個缺點,那就是,一般在使用它們的時候,在提交網頁時,都要對整個網頁的用戶輸入進行驗證。在驗證控件中,沒有一種直接的方法,可以只驗證頁面中某些部分的輸入。本文將介紹如何利用asp.net驗證控件以及javascript特性,完成只驗證頁面中某些部分的輸入的功能。

為什麼有的時候,只需要對頁面的某些部分的輸入進行驗證呢?舉一個例子,在某些應用中,有的時候為了用戶的輸入方便,有可能在同一個頁面中,存在多個要求用戶輸入數據和提交數據的表單(這在一些信息系統的後台管理系統中,比較常見)。而用戶每次的一個操作,比如用戶輸入每次進貨的數量並提交,則只需要對該提交的數據進行驗證,而頁面中其他的表單,比如每次出貨的數量,由於用戶沒有填入數據,則不需要對其進行校驗了,這樣也提高了應用的效率。

下面我們來看下如何有選擇地對表單輸入進行驗證,首先全面了解下asp.net中關於輸入驗證控件的一些屬性和用法。

首先介紹的是causesvalidation屬性。如果我們不想對某個按鈕提交的事件進行驗證,只需要將causesvalidation屬性設置為false,比如,有一個”取消”按鈕,可以這樣設置:

<asp:button id="cmdCancel" runat="server" Text="Cancel" CausesValidation="False"></asp:button>

另外一種寫法是:

cmdcancel.causesvalidation=false;

這樣,一旦將causesvalidation屬性設置為false,則無論是客戶端的驗證還是服務端的驗證,都將不起作用。

如果要用選擇地對頁面的某些部分進行驗證,則需要使用驗證控件的某些方法和javascrpt來實現,下面的列表,列舉了驗證控件中一些方法和屬性:

名稱 描述 Page_IsValid 檢驗頁面中的所有輸入是否都合法,返回布爾值 Page_Validators 當前頁面中所有驗證控件所形成的一個數組 Page_ValidationActive 為一個布爾值,表明是否執行驗證功能,設置為false則關閉驗證功能。 Isvalid 該屬性驗證客戶端的輸入是否合法 ValidatorEnable(val, enable) 該方法將某個驗證控件作為傳遞參數,啟動或禁止該控件使用驗證功能,在客戶端起作用

其中特別介紹一下validatorenable方法,該方法可以禁止某個控件使用驗證功能,比如:

<script language="javascript">
 ValidatorEnable(驗證控件名稱, false)
</script>

如果要禁止頁面中所有驗證控件使用驗證功能,則可以配合page_validators數組(該數組中的元素是頁面中所有驗證控件),使用如下代碼

<script language="javascript">
for(i=0;i< Page_Validators.length;i++)
{
 ValidatorEnable(Page_Validators[i], false)
}
</script>

在實際使用的時候,將以上代碼搭配起來,就可以實現有選擇地對表單輸入進行驗證,我們先來看個具體的例子,如下圖:

在上圖中,我們要實現的是,當用戶只輸入region name的值後,在點擊“get report”按鈕提交後,服務器端只會對region name的輸入進行校驗,而用戶沒用輸入的開始日期和結束日期,則不會進行校驗,也不會顯示出錯信息;反之,當用戶在輸入開始日期和結束日期並提交後,系統也不會對region name 的輸入進行校驗。

代碼如下。

<script language="javascript">
function enableRegionValidators()
{
 for(i=0;i< Page_Validators.length;i++)
 {
  ValidatorEnable(Page_Validators[i], false)
 }
 ValidatorEnable(rvRegion, true)
}
</script>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved