【发布时间】:2014-03-23 06:29:11
【问题描述】:
我经常发现自己想在 MVC5 中即时验证单个表单字段,虽然我喜欢 DataAnnotations,但我认为它们不能提供开箱即用的服务器端验证方法。
我意识到无论如何都会在提交时执行验证,但是有某些字段,例如username,用户应该能够即时查看它们是否有效。因此,我继续编写 jQuery/Javascript 代码以使用 $.ajax 或类似名称检查这些字段,并且编写了大量样板代码。 IE,在触发适当的事件(输入更改)后,客户端调用服务器,然后更新字段右侧的验证占位符,如果有效,则使用复选标记,如果无效,则使用错误图像。
更困扰我的是没有静态类型检查,所以直到运行时我才知道任何严重的语法错误(即拼写错误的 div id)。
我想知道:
- 是否可以编写一个在提交时调用服务器的自定义属性(就像它对
[Required]字段一样,除了它需要从服务器获得响应才能继续)?这将是最好的选择。 - 是否有任何内置助手可以在某些适当的情况下(例如,
onChange)发出Ajax调用,然后在获取结果后更新 div? - 如果您是 ASP.NET MVC 开发人员,您过去是如何解决这个问题的?我不想继续编写样板 javascript。我知道 javascript 是不可避免的,但这似乎是一个足够通用的问题,可以编写这样的帮助程序。
提前感谢您的任何建议。
【问题讨论】:
-
在你的控制器中检查
ModelState.IsValid。 -
@Jasen,我使用
ModelState.IsValid检查已发布的表单,但我想了解特定字段的模型验证 - 例如,我只会通过RegistrationFormModel的用户名部分发送,不一定是全部。我正在尝试查看 MVC 中是否有解决此问题的通用方法
标签: jquery ajax asp.net-mvc validation server-side