任何人都可以看到为什么我的验证不起作用?目前它只是在插入时发布和失败,因为数据插入不允许空值而不是捕获客户端并显示所需的字段消息。
查看
http://pastebin.com/4grwD02i
控制器
http://pastebin.com/jdbYk8tR
布局
http://pastebin.com/AbQ9xYLG
AppSettings
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
模型
http://pastebin.com/FJkPgKsX
我只是为我的DAL使用Linq to SQL DBML文件,所以,我没有做任何属性的装饰。我可以这样做并仍然使用DBML吗?
答案 0 :(得分:1)
我没有看到您的任何操作方法检查模型状态是否有效。无论页面上的验证是否有效,您的操作方法都将执行。要检查是否已通过所有验证,请检查ModelState.IsValid
属性。
ModelState.IsValid
是否为false,然后不对您的数据存储执行任何操作。大多数人只是呈现与以前相同的视图,帮助者将完成他们的工作,即输入用户的数据并显示验证。
编辑: 在查看您的帖子之后,您可能希望该帖子永远不会发生,因为您尝试使用客户端验证。我对验证的这一部分没有那么多经验,但即使你想使用它,你也不应该完全依赖它并且总是依靠服务器为你做验证(客户端验证)应该主要是为了更好的用户体验)。
我不确定你的模型是什么样的,但我假设你用System.ComponentModel
命名空间中的属性修饰了各种属性和/或字段,对吗?
答案 1 :(得分:1)
默认模型绑定器依赖于数据注释来执行验证。因此,如果您的模型属性没有任何属性来指示如何执行验证,那么它将始终被视为有效(例如,在您尝试将无效格式绑定到DateTime
或{{1}的情况下}默认模型绑定器将自动将模型状态标记为无效的字段。