2010-12-12 53 views
2

客戶端和服務器驗證客戶端驗證如果我有類似如下:只顯示在asp.net

<asp:TextBox id="test" runat="sever"></asp:TextBox> 
<asp:RequiredFieldValidator runat="server" ControlToValidate="test" 
ErrorMessage="Required"></asp:RequiredFieldValidator> 
<asp:Label runat="server" id="lblStatus"></asp:Label> 

如果在後面的代碼,我將標籤設置爲「您必須輸入一個值如果文本框是空的「來驗證它在服務器端,這很好,但如果啓用JavaScript,我不想顯示客戶端驗證和服務器端標籤在一起。這是什麼,我只需要禁用客戶端驗證器,如果JavaScript已啓用?

回答

1

實際上,您可以使用一個驗證器並完成客戶端和服務器驗證。 ASP.Net將負責確定是否僅在客戶端和服務器上觸發客戶端,而只需要您的一點幫助。您不應該單獨依賴客戶端驗證,但服務器驗證可以保持沉默,即您不需要將兩條錯誤消息返回給用戶。

因此,您不需要您自己的狀態標籤,並且您需要添加一個檢查到從您的頁面觸發的事件處理程序。

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    if(!Page.IsValid) 
    { 
     return; 
    } 
} 
1

是的。 :)

嗯,我不知道我理解你的問題,因爲你似乎已經自己回答了。你不能只爲這個RequiredFieldValidator禁用客戶端驗證來實現你想要的?

<asp:RequiredFieldValidator runat="server" ControlToValidate="test" 
    ErrorMessage="Required" EnableClientScript="False"/> 
0

我不知道,我得到了這個問題,但你可以在你的JavaScript代碼進行驗證,避免回發。

var doSomething = function(sender, args){ 
if(Page_IsValid){ 
    //Do something cool 
    return true; 
}else{ 
    return false; 
} 
} 

我面臨着一些類似的問題,在今天的工作,請參考下面的鏈接,這是非常有用的

ASP.NET Valildation在深度 http://msdn.microsoft.com/en-us/library/aa479045.aspx