当响应来自jQuery AJAX时,Asp.net CustomValidator客户端验证不会触发

时间:2013-05-03 15:43:48

标签: jquery asp.net ajax asp.net-web-api

我尝试使用带有ASP.net webforms CustomValidator的jQuery AJAX验证有关模糊的电子邮件文本框。

<asp:TextBox ID="Email" runat="server" ClientIDMode="Static">
<asp:CustomValidator ID="EmailRegisteredValidatation" ControlToValidate="Email" runat="server"
                        ValidationGroup="RegisterUserValidationGroup"  ClientValidationFunction="CheckEmailRegistration"
                        ErrorMessage="Email Already Registered"></asp:CustomValidator>


 function CheckEmailRegistration(sender, args)
    {
        $.post("/api/CheckEmailRegistration/", { Email: $("#Email").val() })
        .done(function (data) {
          args.IsValid = data;
        });
    }

该脚本不起作用。它不会改变验证状态。我肯定知道返回的数据是true还是false。但我猜测AJAX结果的延迟导致了问题。

这样可行:

  function CheckEmailRegistration(sender, args)
        args.IsValid = false;
    }

这也不起作用:

function CheckEmailRegistration(sender, args)
    {
    $.post("/api/CheckEmailRegistration/", { Email: $("#Email").val() })
    .done(function (data) {
      args.IsValid = false;  //even hardcoded doesn't work
    });
    }

在范围之外也不起作用:

  function CheckEmailRegistration(sender, args)
    {
        var _value;
        $.post("/api/CheckEmailRegistration/", { Email: $("#Email").val() })
        .done(function (data) {
            _value = data;
            }
        });

        args.IsValid = _value;
    }

有什么想法吗?

谢谢

0 个答案:

没有答案