我经常发现自己想要在MVC5中动态验证单个表单字段,而我喜欢DataAnnotations
我不认为它们提供了一种开箱即用的服务器端验证方法。
我意识到无论如何都会在提交时执行验证,但有些字段,例如username
,用户应该能够即时查看它们是否有效。所以我继续编写jQuery / Javascript代码来检查$.ajax
或类似的这些字段,这是很多样板代码编写。 IE,在触发相应事件(输入已更改)后,客户端调用服务器,然后使用复选标记(如果有效)更新字段右侧的验证占位符,如果无效则更新错误图像。
更令我烦恼的是没有静态类型检查,因此在运行之前我不会知道任何令人震惊的语法错误(即错误拼写的div id)。
我想知道:
[Required]
字段一样,除非它需要从服务器获取响应才能继续)?这将是最好的选择。Ajax
)上进行onChange
调用,然后在获取结果后更新div?提前感谢任何建议。
答案 0 :(得分:0)
您可以使用 RemoteAttribute 。
您可以在每次值更改时指定要在控制器上调用的方法,如果有效,则返回true;如果不是,则返回错误消息。
在你的模特中:
[Remote("IsUserNameUnique", "User")]
public string UserName { get; set; }
控制器:
public class UserController : Controller
{
public JsonResult IsUserNameUnique(string UserName)
{
if(isUnique(UserName))
return Json(true,JsonRequestBehavior.AllowGet);
else
retuen Json("Username is taken.",JsonRequestBehavior.AllowGet)
}
}
如果您的观点刚刚提出
@Html.ValidationMessageFor(model=>model.UserName)