Asp.net mvc MVC AJAX属性验证

Asp.net mvc MVC AJAX属性验证,asp.net-mvc,jquery-validate,asp.net-mvc-4,Asp.net Mvc,Jquery Validate,Asp.net Mvc 4,我有一个创建用户视图(操作),除了对某些字段类型、日期、emailaddress等进行客户端验证外,我想通过调用几个服务器控制器操作来检查emailaddress和username等两个字段是否唯一 我认为最好是“钩住”现有的MVC验证机制来调用这些ajax函数。因此,当表单验证发生时,它会调用我的ajax验证器,并在modelstate.isvalid中重新反映这一点,并且在默认的html.validation帮助程序中会显示任何错误 我不确定这是否可行,或者我是否需要单独处理我自己的验证?目

我有一个创建用户视图(操作),除了对某些字段类型、日期、emailaddress等进行客户端验证外,我想通过调用几个服务器控制器操作来检查emailaddress和username等两个字段是否唯一

我认为最好是“钩住”现有的MVC验证机制来调用这些ajax函数。因此,当表单验证发生时,它会调用我的ajax验证器,并在modelstate.isvalid中重新反映这一点,并且在默认的html.validation帮助程序中会显示任何错误

我不确定这是否可行,或者我是否需要单独处理我自己的验证?目前,我已经创建了两个jquery函数,它们调用了两个控制器操作,并在我添加的两个跨度中显示用户名和电子邮件地址的有效状态


MVC的最佳模式是什么?我考虑了将上述每个字段包装在一个单独的@Ajax.BeginForm(

Asp.Net MVC中内置了远程验证)中的可能方法

在模型中:

public class CreateUserModel 
{
    [Remote("IsNameAvailable", "Validation")]
    public override string UserName { get; set; }
}
在控制器中:

public class ValidationController : Controller 
{
    public JsonResult IsNameAvailable(string Username) 
    {
        ... Do some checks
        return Json({some validation message here}, JsonRequestBehavior.AllowGet);
    }

}

您可以使用远程验证。 阅读本文:

听起来很理想,那么在这种情况下什么时候会发生这种验证?除了表单post之外,还可以在失去焦点时调用它吗?在base-on表单提交AFAIK。它使用jQuery不引人注目的验证,因此在标记中,这种东西看起来像:data val remote=“&;39;UserName&;39;无效。“data val remote additionalfields=“*.UserName”data val remote url=“/Validation/isnameavable”。您还可以在表单上明确调用validate。它是jQuery.Validation的一部分。