使用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验证存在?
感谢任何帮助。
答案 0 :(得分:1)
您需要添加以下内容:
col100