2010-06-01 63 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

相关问题