2011-12-22 63 views
0

我寫了一個簡單的asp.net代碼與asp.net所需的驗證控件,問題是我只有一個提交按鈕稱爲GO,並尋找一個下拉列表選擇: 清除,提交,取消。asp.net必需的字段驗證每個按鈕動作調用

無論選擇何種選項,都會觸發所需的字段驗證。

有沒有一種方法來編寫頁面,以便只有當選定的值是Submit it validates?

<asp:TextBox runat="server" id="txtName" /> 
    <asp:RequiredFieldValidator runat="server" id="reqName" controltovalidate="txtName" errormessage="Please enter your name!" /> 
    <br /><br /> 


    <asp:DropDownList ID="dpAction" runat="server"> 
       <asp:ListItem>Submit</asp:ListItem> 
       <asp:ListItem Value="Reset">Reset</asp:ListItem> 
       <asp:ListItem>Cancel</asp:ListItem> 
      </asp:DropDownList> 
    &nbsp; 
      <asp:Button ID="btnAction" runat="server" onclick="btnAction_Click" Text="Go" 
       Width="40px" /> 
+0

你可以發佈你的btnAction_Click的邏輯嗎? – c0deNinja 2011-12-22 02:03:45

+0

它只是檢查值是否==提交然後它會處理一些值併發送到電子郵件。 – user1091438 2011-12-22 02:06:37

回答

2

您可能必須使用自定義驗證程序,並且如果您想要客戶端驗證,則需要爲其編寫客戶端代碼。

我假設你有一個文本框或「dpAction」設置爲「提交」時需要的其他東西?

因此,例如,你會做這樣的事情在你的標記

<asp:CustomValidator id="CustomValidator1" runat="server" 
    OnServerValidate="TextValidate" 
    ControlToValidate="TextBox1" 
    ErrorMessage="Text must be specified if Submit is selected"> 

,並在您的代碼隱藏

protected void TextValidate(object source, ServerValidateEventArgs args) 
{ 
    args.IsValid = dpAction.SelectedValue == "Submit" && !String.IsNullOrEmpty(textbox1.Text); 
} 
+0

正確我有幾個文本框,由asp.net所需的字段驗證器進行驗證。我沒有寫任何JavaScript,只是使用了asp.net中的一個。但事情是,點擊按鈕後就會觸發,我不想驗證所選的選項是否清除 – user1091438 2011-12-22 02:04:26

+0

此自定義驗證器可以使用驗證摘要以顯示必填字段嗎? – user1091438 2011-12-22 02:08:13

+0

是的。如果要根據上下文顯示不同的消息,您可能需要在TextValidate方法中設置錯誤消息 – 2011-12-22 02:18:29

0

使用「必需的」屬性。 其新的HTML 5

0

你應該爲每個Validator設置ValidationGroup! 爲您希望所有控件進行驗證和按鈕來觸發驗證:

和按鈕必須具有相同的validaton組的驗證!