2012-12-29 81 views
3

我正在使用asp.net驗證控件驗證用戶輸入。我想要的是使用驗證控件生成的錯誤消息更改標籤文本。Asp.net驗證錯誤消息來更改標籤文本

<asp:Label ID="Label1" runat="server" Text="Whats your name"></asp:Label> 
<asp:TextBox ID="nameB" Width="322px" Height="30px" runat="server"></asp:TextBox> 

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="business" runat="server" ErrorMessage="Please tell us your name." ControlToValidate="nameBuisness" CssClass="errMsg" Display="Dynamic"></asp:RequiredFieldValidator> 

謝謝。

+0

我喜歡這個想法,但我不確定它可以使用常規的ASP.NET驗證控件完成。如果您使用其他驗證框架(例如jQuery Validate或其他一些jQuery驗證插件)開放解決方案,我可以寫出一個關於如何在您的示例中執行此操作的答案。 –

+0

嗨@TomasLycken我是編程新手,所以任何建議和指導將是偉大的學習up.Please顯示你的建議謝謝。 – Raghav

+0

在閱讀其他人的答案之後,我意識到我腦子裏的東西並不適合WebForms範例 - 我想我一直在做ASP.NET MVC太久了:P但是有兩個很好的建議可以幫助你嘗試! –

回答

1

一種方法是處理提交按鈕的OnClientClick -event並調用javascript函數,如:

<script type="text/javascript"> 
    function displayValidationResult() { 
     // Do nothing if client validation is not available 
     if (typeof (Page_Validators) == "undefined") return; 
     var LblName = document.getElementById('LblName'); 
     var RequiredName = document.getElementById('RequiredName'); 
     ValidatorValidate(RequiredName); 
     if (!RequiredName.isvalid) { 
      LblName.innerText = RequiredName.errormessage; 
     } 
    } 
</script> 

<asp:Label ID="LblName" runat="server" Text="Whats your name"></asp:Label> 
<asp:TextBox ID="TxtNameBusiness" Width="322px" Height="30px" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="RequiredName" ValidationGroup="business" 
    runat="server" ErrorMessage="Please tell us your name." ControlToValidate="TxtNameBusiness" 
    CssClass="errMsg" Display="None"></asp:RequiredFieldValidator> 
<asp:Button ID="BtnSumbit" runat="server" Text="Submit" 
    OnClientClick="displayValidationResult()" ValidationGroup="business" /> 

我已經使用了一些可用的幾個ASP.NET客戶端驗證方法。我還將控件重命名爲更有意義,並添加了提交按鈕。

ASP.NET Validation in Depth

+0

@Raghav:然後設置驗證器的「Display =」None「',編輯我的答案。 –

+0

非常感謝先生,順便說一句,我試圖實現的是[鏈接](http://www.f-i.com/contact)。上述方法是最優的還是我應該去做其他事情? – Raghav

1

如果你的要求是,你想用做此驗證內置ASP.Net驗證控件,那麼你將需要使用ASP.Net CustomValidator控件。這不能使用ASP.Net RequiredFieldValidator控件完成。要做到你所指定的驗證,把一個CustomValidator控件在您的網頁上,這樣的標記看起來像這樣:

<asp:Label ID="Label1" runat="server" Text="Whats your name"></asp:Label> 

<asp:TextBox ID="nameB" Width="322px" Height="30px" runat="server"></asp:TextBox> 

<asp:CustomValidator ID="CustValidator" runat="server" ControlToValidate="nameB" 
    ValidateEmptyText="true" ErrorMessage="Please tell us your name." 
    onservervalidate="CustValidator_ServerValidate" Display="none" >**</asp:CustomValidator> 

<asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" CausesValidation="true" /> 

然後,您需要編寫自定義驗證。服務器端驗證代碼如下所示:

protected void CustValidator_ServerValidate(object source, ServerValidateEventArgs args) 
    { 
     if (string.IsNullOrWhiteSpace(args.Value)) 
     { 
      Label1.Text = CustValidator.ErrorMessage; 
      args.IsValid = false; 
     } 
     else 
     { 
      Label1.Text = "Whats your name"; 
      args.IsValid = true; 
     } 
    } 

此自定義驗證程序會爲您提供所需的行爲。

通常,當您使用CustomValidator控件時,您應該同時進行服務器端驗證(用於安全性)和客戶端驗證(以獲得更好的UI體驗)。要獲得客戶端驗證,您需要在javascript和/或jQuery中編寫客戶端函數以執行類似驗證,然後將其分配給自定義驗證器的ClientValidationFunction。

有關CustomValidator控件的更多信息,請參見MSDN documentation

+0

嗨@Joe Alfano,謝謝,但有一個問題/如果我刪除上述代碼中的兩個astriks錯誤消息正在顯示兩次。 順便說一下,這裏是我想實現的, [鏈接](http://www.f-i.com/contact) – Raghav

+1

設置驗證器顯示屬性爲無。我編輯了我的答案。 –