如果使用ajax在ASP.net MVC中已经存在电子邮件,如何防止表单提交

时间:2013-12-26 16:36:34

标签: jquery asp.net ajax asp.net-mvc asp.net-mvc-3

我在asp.net mvc中有一个注册表单,如果该特定电子邮件已经存在,我想阻止该表单提交。我想使用ajax解决它,而不使用远程属性。下面是代码。我已使用ajax检查了电子邮件可用性,但不知道如何阻止表单提交。如果用户按下提交按钮,则只显示警告框,电子邮件已存在。

$(document).ready(function(){
$('#txtUsername').blur(function(){
$.ajax({
type:'POST',
url:'/Home/CheckName',
data:"{'searchString':'"+ document.getElementById('txtUsername').value + "'}",
success : function(data)
{
if(data=="true")
{
alert("Username not Available");
}
else
{
alert("Username Available");
}
});
});
});


  HomeController.cs

[HttpPost]
public ActionResult Index(User model)
{
try
{
db.AddToUsers(model);
db.SaveChanges();
return RedirectToAction("Index");
}
catch(Exception ex)
{
}
return View("Index",model);
}
}
}


public JsonResult CheckName(string searchString)
{
var count=db.Users.Where(c=>c.User.Contains(searchString)).Count();
if(count>=1)
{
return Json(true);
}
else
{
return Json(false);
}
}

1 个答案:

答案 0 :(得分:0)

创建一个全局变量,在方法中设置它,然后在单击提交时检查var。

添加此全局变量:

 var _canSubmit = false;  //default

 $(document).ready(function(){
 $('#txtUsername').blur(function(){
 $.ajax({
    type:'POST',
    url:'/Home/CheckName',
    data:"{'searchString':'"+ document.getElementById('txtUsername').value + "'}",
    success : function(data)
    {
       if(data=="true")
       {
          _canSubmit = true;
          alert("Username not Available");
       }
       else
       {
          _canSubmit = false;
          alert("Username Available");
       }
    });
 });
 });

然后点击提交时添加:

 javascript:if ( _canSubmit == false ) { return false } else{ return true; }