MVC 3 Razor - 不引人注目的验证不起作用

时间:2011-03-30 02:54:46

标签: asp.net-mvc-3 unobtrusive-validation

任何人都可以看到为什么我的验证不起作用?目前它只是在插入时发布和失败,因为数据插入不允许空值而不是捕获客户端并显示所需的字段消息。

查看
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>

~~ UPDATE ~~

模型
http://pastebin.com/FJkPgKsX

我只是为我的DAL使用Linq to SQL DBML文件,所以,我没有做任何属性的装饰。我可以这样做并仍然使用DBML吗?

2 个答案:

答案 0 :(得分:1)

我没有看到您的任何操作方法检查模型状态是否有效。无论页面上的验证是否有效,您的操作方法都将执行。要检查是否已通过所有验证,请检查ModelState.IsValid属性。

ModelState.IsValid是否为false,然后不对您的数据存储执行任何操作。大多数人只是呈现与以前相同的视图,帮助者将完成他们的工作,即输入用户的数据并显示验证。

编辑: 在查看您的帖子之后,您可能希望该帖子永远不会发生,因为您尝试使用客户端验证。我对验证的这一部分没有那么多经验,但即使你想使用它,你也不应该完全依赖它并且总是依靠服务器为你做验证(客户端验证)应该主要是为了更好的用户体验)。

我不确定你的模型是什么样的,但我假设你用System.ComponentModel命名空间中的属性修饰了各种属性和/或字段,对吗?

答案 1 :(得分:1)

默认模型绑定器依赖于数据注释来执行验证。因此,如果您的模型属性没有任何属性来指示如何执行验证,那么它将始终被视为有效(例如,在您尝试将无效格式绑定到DateTime或{{1}的情况下}默认模型绑定器将自动将模型状态标记为无效的字段。