【问题标题】:server side validation on ajax modal popup extenderajax 模态弹出扩展器上的服务器端验证
【发布时间】:2010-06-01 23:59:33
【问题描述】:

我有一个程序,我在其中使用模式弹出窗口,允许用户向数据库添加新项目,这工作正常,但我想添加一些验证。例如,当由于重复条目而引发异常时。我浏览了几个关于如何使用 asp.net 自定义验证控件的示例。

问题在于,一旦验证事件触发,模式弹出窗口就会由于回发而消失。

<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;
        }
    }

}

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    这很棘手,因为您需要为自定义验证器进行回发。您可以做的是检查页面是否有效;如果出现错误,您可以通过在服务器或客户端上调用模态扩展程序 Show 方法来显示面板以重新显示错误。

    否则,模式弹出窗口在回发时不会保持其打开状态。

    HTH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 2012-08-05
      相关资源
      最近更新 更多