ASP MVC中应该使用远程验证还是Jquery ajax调用?

ASP MVC中应该使用远程验证还是Jquery ajax调用?,jquery,asp.net-mvc-3,Jquery,Asp.net Mvc 3,我想知道什么是在ASP MVC中使表单有效的最好方法 我使用jQueryAjax检查数据库中的Username出口。所以问题是当我提交表单时,这个方法需要我点击Username字段来执行onblur函数ajax调用,它不会显示以前的错误消息 使用远程验证,它在我离开或忽略用户名时执行。但这种方式的问题是我无法管理错误消息,例如: 用户名必须至少有3个字符……或已使用的用户名 任何人都可以给我一个建议或一些链接,告诉我如何在时间上验证表单的有效性(这意味着当用户省略该字段并转到下一个字段时,如本页

我想知道什么是在ASP MVC中使表单有效的最好方法

我使用jQueryAjax检查数据库中的
Username
出口。所以问题是当我提交表单时,这个方法需要我点击
Username
字段来执行
onblur
函数ajax调用,它不会显示以前的错误消息

使用
远程验证
,它在我离开或忽略
用户名时执行。但这种方式的问题是我无法管理错误消息,例如:
用户名必须至少有3个字符……
已使用的用户名

任何人都可以给我一个建议或一些链接,告诉我如何在时间上验证表单的有效性(这意味着当用户省略该字段并转到下一个字段时,如本页:)?

使用

$("#UserName").focusout(function(event){
     var name = $(this).attr('value');
       if(name.length>=3)
       {
    searchCustomer();//Function containing your ajax call
    }
else
{
  //Show error message of length less than 3
}
});

要解决您的问题,您可以使用以下解决方案:

  • 在控制器上创建JsonResult或Action Result方法:

        [HttpPost]
    public JsonResult GetUserNameExistant([Bind(Include = "UserName")] User user)
    {
    
        var user= repository.List("").Count(c => c.user== user.UserName);
        if (!user.Equals(0))
        {
             //This User Found
            return Json("This UserName Exist!", JsonRequestBehavior.DenyGet);
        }
        //This UserName Not Found On DB
        return Json(true, JsonRequestBehavior.AllowGet);
    }
    
  • 在域类中,在属性上方添加以下行代码:

    [远程(“GetUserNameExistant”、“User”、HttpMethod=“Post”)]


  • 你能在jsfiddle上发布一个样本吗?@PKKG的可能副本我试着用你的方式来做,但它不起作用。