2014-02-25 28 views
0

过去,我能够对查找用户名的方法进行异步调用,以查看它是否已存在于数据库中然后以用户输入文本框的形式将其作为JSON返回。这已经很长时间了,我似乎无法找到解释如何做到这一点的文章。我目前已经准备好了所有的东西。在主POST(ASP.NET MVC4)之前使用ajax验证来检查电子邮件地址是否已经存在

<script src="~/Scripts/jquery.validate.min.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 

,以及在我的webconfig

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

和我的视图模型是

public class EmailListSignUpViewModel 
{ 
    [Required] 
    public string FirstName { get; set; } 
    [Required] 
    public string LastName { get; set; } 
    [Required] 
    [DataType(DataType.EmailAddress)] 
    public string Email { get; set; } 
    [Required] 
    [Compare("Email")] 
    [Display(Name = "Confirm Email")] 
    public string EmailConfirmation { get; set; } 
} 

我将如何实现我期待的功能?

回答

1

在一些ControllerName创建方法:

public JsonResult IsUniq(string Username) { 
      //to do 
      return Json("..."); 
     } 

而且在视图模型

使用属性附加伤害
[Remote("IsUniq", "ControllerName")] 
public string Username{ get; set; } 
0

你可以做一个Ajax调用来检查,如果你想。我如何验证客户端上的电子邮件是一个功能

function validateEmail(email) { 
    if (email == "") { 
     return false; 
    } else { 
     var re = /^(([^<>()[\]\\.,;:\[email protected]@\"]+(\.[^<>()[\]\\.,;:\[email protected]@\"]+)*)|(\".+\"))@@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;; 
     return email.match(re) 
    } 
} 

集这在您的提交按钮点击事件,如果返回true,什么也不做。如果false做一个preventDefault。

$('.btnSubmit').on('click', function(e){ 
    if(!validateEmail($('.txtEmail').val())){ 
     e.preventDefault(); 
    } 
}); 

让我知道如果您有任何疑问

2

你可能在你的视图模型和设置使用Remote属性的操作方法为Buboon的答案返回的虚假事实。

MVC Remote Validation explained

如果你想自己做,你可以做到这一点。侦听keyup事件和文本框的值发送到运行查询againist你的数据库表的操作方法,并返回一个结果,你会在你的getJSON回调方法评估和做要紧

$(function(){ 
    $("#Email").keyup(function(){ 
    var val=$("#Email").val(); 
    $.getJSON("@Url.Action("Check","User")", { key : val },function(res){ 
     if(res=="exists") 
     { 
     $("#someMsgDiv").html("exists"); 
     } 
    }); 
    }); 
}); 

假设你在UserController中有Check动作方法。

public ActionResult Check(string key) 
{ 
    //check in db and return "exists" if record exists 
} 
+0

感谢您的链接! – Adrian

相关问题