2010-06-01 66 views
1

我有一個程序,我使用的模式彈出窗口允許用戶添加新的項目到數據庫,這是工作正常,但我想補充一些驗證。例如,當由於重複條目而引發異常時。我已經瀏覽了一些關於如何使用asp.net自定義驗證控件的示例。ajax模式彈出式擴展程序服務器端驗證

問題是,一旦驗證事件觸發模式彈出消失,由於回發。

<asp:Panel ID="panComp" runat="server" Height="180px" Width="400px" cssclass="ModalWindow"> 
     <table width="100%"> 
       <tr> 
         <td><asp:Label Text="Name" runat="server" /></td> <td><asp:TextBox ID="txtCompName" runat="server" /> 
         <asp:CustomValidator ID="CustomValidator1" OnServerValidate="btnAddComp_Click" runat="server" ErrorMessage="Competency already exists" ControlToValidate="txtCompName" /> 
         <cc1:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" runat="server" TargetControlID="CustomValidator1" />                
         </td> 
      </tr> 
     </table> 
     <br /> 
     <asp:Button ID="btnAddComp" runat="server" Text="Add" /> 
     <asp:Button ID="btnCancel" runat="server" Text="Cancel" /> 
    </asp:Panel> 

的事件觸發,因爲它應該和modalPopupExtender OnOkScript不具有價值

protected void btnAddComp_Click(object source, ServerValidateEventArgs args) 
{ 
    if (!String.IsNullOrEmpty(txtCompName.Text)) 
    { 
     try 
     { 
      _ass.AddCompetency(txtCompName.Text);     
      args.IsValid = true; 
     } 
     catch (Exception) 
     { 
      args.IsValid = false; 
     } 
    } 

} 

回答

2

,因爲你需要回發發生了自定義驗證這是棘手的。你可以做的是檢查頁面是否有效;如果存在錯誤,則可以通過在服務器或客戶端上調用模式擴展程序Show方法來顯示面板,以重新顯示該錯誤。

否則,模式彈出窗口不會在回發期間保留其打開狀態。

HTH。

+0

hrm我認爲這是我唯一的選擇,謝謝;) – fluf 2010-06-02 08:39:09

+0

這樣做的技巧謝謝:D – fluf 2010-06-02 08:45:40

相關問題