MVC AJAX属性验证

时间:2012-10-09 22:27:21

标签: asp.net-mvc jquery-validate asp.net-mvc-4

我有一个创建用户视图(操作),除了某些字段类型,日期,电子邮件地址等的客户端验证之外,我想通过调用几个服务器控制选项来检查一对例如emailaddress和username是唯一的。

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

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

MVC的最佳模式是什么?我想到了在一个单独的@ Ajax.BeginForm中包装上述每个字段的可能方法(

2 个答案:

答案 0 :(得分:4)

在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);
    }

}

答案 1 :(得分:2)

您可以使用远程验证。 阅读这篇文章: http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx