Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ajax模式弹出扩展程序的服务器端验证_C#_Asp.net_Ajax - Fatal编程技术网

C# ajax模式弹出扩展程序的服务器端验证

C# ajax模式弹出扩展程序的服务器端验证,c#,asp.net,ajax,C#,Asp.net,Ajax,我有一个程序,我使用一个模式弹出窗口,允许用户添加新的项目到数据库中,这是工作正常,但我想添加一些验证。例如,由于重复条目引发异常时。我已经浏览了几个关于如何使用asp.net自定义验证控件的示例 问题是,一旦验证事件触发,模式弹出窗口就会由于回发而消失 <asp:Panel ID="panComp" runat="server" Height="180px" Width="400px" cssclass="ModalWindow"> <table wid

我有一个程序,我使用一个模式弹出窗口,允许用户添加新的项目到数据库中,这是工作正常,但我想添加一些验证。例如,由于重复条目引发异常时。我已经浏览了几个关于如何使用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>

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

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

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

}