jQuery验证添加方法以检查电子邮件是否已存在

时间:2017-05-10 12:19:00

标签: jquery ajax asp.net-mvc validation

使用ASP.NET MVC ..我可以进行服务器端检查,看看用户提交的电子邮件地址是否已存在于我的数据库中:

if (db.TableName.Any(x => x.Email.Equals(object.Email, StringComparison.CurrentCultureIgnoreCase) && x.ID != object.ID))
{
    ModelState.AddModelError("Email", "This email already exists!");
    return View(object);
}

如果这是真的,那么我可以将模型返回到视图,并且电子邮件字段将突出显示为红色,并在其下方显示验证消息。

但截至目前,我正在使用api控制器并通过ajax调用该控制器方法。

var settings = {};
settings.baseUri = '@Request.ApplicationPath';
var infoGetUrl = "";
if (settings.baseUri === "/ProjectName") {
    infoGetUrl = settings.baseUri + "/api/controllername/";
} else {
    infoGetUrl = settings.baseUri + "api/controllername/";
}

$("#Create-Btn").on("click",
    function (e) {

        $("form").validate({
            submitHandler: function () {

                e.preventDefault();

                $.ajax({
                    method: "POST",
                    url: infoGetUrl,
                    data: $("form").serialize(),
                    success: function (data) {
                        toastr.options = {
                            onHidden: function () {
                                window.location.href = newUrl;
                            },
                            timeOut: 3000
                        }
                        toastr.success("Successfully created.");
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        var status = capitalizeFirstLetter(textStatus);
                        var error = $.parseJSON(jqXHR.responseText);
                        toastr.error(status + " - " + error.exceptionMessage);
                    }
                });
            }
        });
    });

在我的api控制器发布方法中,我有这个:

if (
    db.TableName.Any(
        x => x.Email.ToUpper().Equals(object.Email.ToUpper())))
{
    throw new Exception("This email already exists!"); 
}

现在,这确实会在toastr通知中返回异常消息,但电子邮件文本框不会突出显示为红色,因为它没有添加引导程序input-validation-error类。

所以我的问题是,有没有办法添加一个方法来检查数据库,看看用户在表单中输入的电子邮件是否已经通过jquery验证存在?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您需要添加以下内容:

col100