我对此行为感到困惑:
我有一个开箱即用的MVC3应用程序。我还没有真正完成脚手架模板给我的任何定制。
在web.config中,clientsidevalidationenabled和unobtrusivevalidation都是真的。
我有一个类,其中一个字段使用必需注释,一个使用 StringLength ,另一个使用 RegularExpression 。当我编辑一个对象时,标有StringLength&的属性的文本框。正则表达式会立即在UI中报告问题,但是必需的文本框没有。
如果我点击SAVE,那么" Model.IsValid"是控制器找到缺少必需的问题,我得到文本框旁边的UI错误消息。
如果我查看页面的来源,我可以看到所需属性的标记确实具有dataval-req和Unobtrusive验证生成的其他相关属性。
这是预期的行为吗?如果是,那是什么原因?如果不是,那我可能做错了什么?
谢谢! :)
答案 0 :(得分:1)
只要页面没有回发到服务器,这应该是正确的行为。只有在以下情况下才会触发所需的客户端验证:
否则,用户将被淹没错误消息。
答案 1 :(得分:1)
我已经触及了这种行为的底部,只是敲了几下键盘。这是预期的。在“创建”视图中,行为与@Beavis描述的一样。在编辑视图中,不显眼的验证可防止在第一次尝试点击SAVE之前在Tab键上验证所需的属性。然后SAVE进行UI验证(不发生回发)并显示属性旁边的错误消息。一旦我第一次点击保存,该属性就会响应标签。所以现在如果我使它有效,消息就会消失在选项卡上。如果我删除了文本框的内容,则消息会重新显示在选项卡上。
感谢大家的帮助。