0

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

查看
http://pastebin.com/4grwD02i

控制器
http://pastebin.com/jdbYk8tR

布局
http://pastebin.com/AbQ9xYLG

应用设置

  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

~~更新~~

型号
http://pastebin.com/FJkPgKsX

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

4

2 回答 2

1

默认模型绑定器依赖于数据注释来执行验证。因此,如果您的模型属性没有任何属性来指示如何执行验证,它将始终被认为是有效的(例如,当您尝试将无效格式绑定到 a DateTimeorint字段时,默认模型绑定器将自动标记模型状态无效)。

于 2011-03-30T06:27:40.403 回答
1

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

IsModelState.IsValid为 false,则不要对您的数据存储执行任何操作。大多数人只是简单地渲染与以前相同的视图,助手将完成他们的工作,即放入用户数据并显示验证。

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

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

于 2011-03-30T02:58:42.107 回答