成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當(dāng)前位置:首頁>>開發(fā)編程>>VS.NET>>新聞內(nèi)容
ASP.NET中對表單輸入行有選擇驗證
作者:廖煜嶸 編譯 發(fā)布時間:2004-9-20 21:02:04 文章來源:天極網(wǎng)
  在ASP.NET中,有一系列的驗證控件,可以很方便地驗證用戶輸入的數(shù)據(jù)是否合法。盡管這些驗證控件十分強大并且容易使用,但它們有一個缺點,那就是,一般在使用它們的時候,在提交網(wǎng)頁時,都要對整個網(wǎng)頁的用戶輸入進行驗證。在驗證控件中,沒有一種直接的方法,可以只驗證頁面中某些部分的輸入。本文將介紹如何利用asp.net驗證控件以及javascript特性,完成只驗證頁面中某些部分的輸入的功能。

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

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

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

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

  另外一種寫法是:

cmdcancel.causesvalidation=false;

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

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

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

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

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

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

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


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

  在上圖中,我們要實現(xiàn)的是,當(dāng)用戶只輸入region name的值后,在點擊“get report”按鈕提交后,服務(wù)器端只會對region name的輸入進行校驗,而用戶沒用輸入的開始日期和結(jié)束日期,則不會進行校驗,也不會顯示出錯信息;反之,當(dāng)用戶在輸入開始日期和結(jié)束日期并提交后,系統(tǒng)也不會對region name 的輸入進行校驗。

  代碼如下。

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

  其中,假設(shè)提交按鈕的名稱設(shè)置為”cmdregion”,而rvRegion則為一個校驗控件,用來檢驗用戶是否輸入了region name,為了使用客戶端腳本,在page_load()中加入以下代碼:

cmdRegion.Attributes.Add("onclick","enableRegionValidators();");

  在上面的代碼中,當(dāng)用戶點擊提交按鈕(cmdregion)時,頁面中除了名字為rvregion的驗證控件生效外,其他的驗證控件是不起作用的(比如,你可以不輸入日期)。但上述的代碼只是檢驗客戶端的驗證控件,要在服務(wù)端也禁止某些驗證控件起作用,在cmd_region的提交事件中,還需要添加以下代碼:

private void cmdRegion_Click(object sender, System.EventArgs e)
{
 rvStartDate.IsValid=true;
 rvEndDate.IsValid=true;
 lblReport.Text = "Region Wise Report For " + txtRegionName.Text.ToUpper();
}


  設(shè)置rvstartdate和rvenddate兩個驗證控件的isvalid屬性為true,將強制設(shè)置這兩個驗證控件通過了驗證,所以,即使不輸入開始和結(jié)束日期,也看不到相關(guān)的出錯信息。

  好,下面我們來測試一下我們的代碼,先在region name中輸入一個值,如china,并提交,輸出如下:

  可以看到,這個時候,我們沒有輸入開始日期和結(jié)束日期,但系統(tǒng)沒有提示出錯信息,同樣道理,只輸入開始日期和結(jié)束日期,而不輸入region name,也不會有提示出錯信息。

  程序的主要代碼如下:

  DisableClientValidation.aspx:

<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0" width="504"
align="center" borderColorLight="#996633" border="1">
<TR>
<TD style="FONT-WEIGHT: bold" align="center" colSpan="3">Region Wise Reports</TD>
</TR>
<TR>
<TD>Region Name</TD>
<TD>
<asp:TextBox id="txtRegionName" runat="server"></asp:TextBox></TD>
<TD>
<asp:RequiredFieldValidator id="rvRegion" runat="server" ControlToValidate="txtRegionName" ErrorMessage="Region is required"></asp:RequiredFieldValidator></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
<TD>
<asp:Button id="cmdRegion" runat="server" Text="Get Report"></asp:Button></TD>
</TR>
</TABLE>
<br>
<br>
<TABLE id="Table2" cellSpacing="0" cellPadding="0" width="504" border="1"
align="center" borderColorLight="#996633">
<TR>
<TD style="FONT-WEIGHT: bold" align="center" colSpan="3">Date Wise Reports</TD>
</TR>
<TR>
<TD>Start Date</TD>
<TD>
<asp:TextBox id="txtStartDate" runat="server"></asp:TextBox></TD>
<TD>
<asp:RequiredFieldValidator id="rvStartDate" runat="server" ControlToValidate="txtStartDate" ErrorMessage="Start Date is required"></asp:RequiredFieldValidator></TD>
</TR>
<TR>
<TD>End Date</TD>
<TD>
<asp:TextBox id="txtEndDate" runat="server"></asp:TextBox></TD>
<TD>
<asp:RequiredFieldValidator id="rvEndDate" runat="server" ControlToValidate="txtEndDate" ErrorMessage="End Date is required"></asp:RequiredFieldValidator></TD>
</TR>
<TR>
<TD style="WIDTH: 139px"></TD>
<TD></TD>
<TD>
<asp:Button id="CmdDate" runat="server" Text="Get Report"></asp:Button></TD>
</TR>
</TABLE>
</form>
<script language="javascript">
function disableScript()
{
 for(i=0;i< Page_Validators.length;i++)
 {
  //Page_Validators[i].isvalid=true;
  ValidatorEnable(Page_Validators[i], false)
 }
}

function enableRegionValidators()
{
 for(i=0;i< Page_Validators.length;i++)
 {
  ValidatorEnable(Page_Validators[i], false)
 }
 ValidatorEnable(rvRegion, true)
}

function enableDateValidators()
{
 for(i=0;i< Page_Validators.length;i++)
 {
  ValidatorEnable(Page_Validators[i], false)
 }
 ValidatorEnable(rvStartDate, true)
 ValidatorEnable(rvEndDate, true)
}
</script>
<asp:Label id="lblReport" style="Z-INDEX: 101; LEFT: 144px; POSITION: absolute; TOP: 344px"
runat="server" Width="344px" Height="24px"></asp:Label>
DisableClientValidation.aspx:.cs主要代碼:
private void Page_Load(object sender, System.EventArgs e)
{
 cmdRegion.Attributes.Add("onclick","enableRegionValidators();");
 CmdDate.Attributes.Add("onclick","enableDateValidators();");
}
private void cmdRegion_Click(object sender, System.EventArgs e)
{
 rvStartDate.IsValid=true;
 rvEndDate.IsValid=true;
 lblReport.Text = "Region Wise Report For " + txtRegionName.Text.ToUpper();
}

private void CmdDate_Click(object sender, System.EventArgs e)
{
 rvRegion.IsValid=true;
 lblReport.Text = "Date Wise Report Betwee " + txtStartDate.Text.ToUpper() + " And " + txtEndDate.Text.ToUpper();
}
}



最新更新
·C#中使用Split分隔字符串的技
·VS2008開發(fā)中Windows Mobile
·PC機和移動設(shè)備上絕對路徑的
·C#程序加殼的方法(使用Sixx
·當(dāng)前上下文中不存在名稱Conf
·請插入磁盤:Visual Studio 2
·用VS.NET讀取Flash格式文件信
·在ASP.NET中使用AJAX的簡單方
·VS.NET 2005中常用的一些代碼
·安裝VS.NET 2005 SP1補丁全攻
相關(guān)信息
·在ASP.NET中使用AJAX的簡單方法
·ASP.NET后臺代碼實現(xiàn)XmlHttp跨域訪問
·ASP.NET取得當(dāng)前頁面的完整URL
·如何在ASP.NET程序里面執(zhí)行DOS命令
·IIS5IIS6IIS7的ASP.net請求處理過程比較
·ASP.NET備份SQL Server數(shù)據(jù)庫的方法
·讓網(wǎng)站圖片“另存為”“無標(biāo)題.bmp”的技巧
·ASP.NET GridView的分頁功能
·ASP.NET實現(xiàn)字母+數(shù)字方式驗證碼
·ASP.NET采集系統(tǒng)萬能正則表達式
畫心
愚愛
偏愛
火苗
白狐
畫沙
犯錯
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛
棉花糖
海豚音
我相信
甩蔥歌
這叫愛
shero
走天涯
琉璃月
Nobody
我愛他
套馬桿
愛是你我
最后一次
少女時代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂
星月神話
心痛2009
愛丫愛丫
半城煙沙
旗開得勝
郎的誘惑
愛情買賣
2010等你來
我叫小沈陽
i miss you
姑娘我愛你
我們都一樣
其實很寂寞
我愛雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個傳說
丟了幸福的豬
找個人來愛我
要嫁就嫁灰太狼
如果這就是愛情
我們沒有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開之前離開
不是因為寂寞才想你
愛上你等于愛上了錯
在心里從此永遠有個你
一個人的寂寞兩個人的錯
主站蜘蛛池模板: 平邑县| 高雄县| 遵义市| 顺义区| 松滋市| 正宁县| 卓尼县| 凤凰县| 贡觉县| 昔阳县| 伊春市| 苍南县| 镇坪县| 唐河县| 延川县| 静乐县| 那曲县| 昆山市| 同仁县| 历史| 普兰县| 唐山市| 潢川县| 长岭县| 富平县| 高要市| 盖州市| 新竹市| 广灵县| 喜德县| 兴文县| 都安| 云阳县| 富民县| 牙克石市| 遵义市| 盖州市| 永安市| 武宁县| 林州市| 余姚市|