Asp.net RequiredFieldValidator如何自动停止更新数据库?

Asp.net RequiredFieldValidator如何自动停止更新数据库?,asp.net,validation,requiredfieldvalidator,Asp.net,Validation,Requiredfieldvalidator,我以前对RequiredFieldValidator和类似工具的印象是,它们向您显示了一个错误标签,并将Page.IsValid设置为false,就是这样。这意味着他们将任务的其余部分(防止使用错误的输入数据)留给您。但今天我意识到,如果使用DetailsView向数据库插入新记录,并使用验证器检查DetailsView中的文本框,它们会自动阻止数据库更新 我想知道这是如何在幕后实施的。我猜它在Validator.PreRender事件中中止了页面生命周期,因此无法访问后期的数据库连接?我可能错

我以前对RequiredFieldValidator和类似工具的印象是,它们向您显示了一个错误标签,并将Page.IsValid设置为false,就是这样。这意味着他们将任务的其余部分(防止使用错误的输入数据)留给您。但今天我意识到,如果使用DetailsView向数据库插入新记录,并使用验证器检查DetailsView中的文本框,它们会自动阻止数据库更新

我想知道这是如何在幕后实施的。我猜它在Validator.PreRender事件中中止了页面生命周期,因此无法访问后期的数据库连接?我可能错了


我试图使用Reflector进入RequiredFieldValidator,查看它是如何实现的,但我真的不知道该去哪里查看。有人能给点提示吗?

本文详细解释了ASP.NET的验证

验证可以是服务器端和/或客户端。如果使用,客户端验证将不允许用户在验证表单之前提交表单。客户端验证是使用JavaScript和DOM实现的。每个提交按钮都由框架连接,以在执行回发之前检查验证

服务器端验证的工作方式不同。事件链在页面加载和事件过程调用之间扩展。验证结果已设置,可由任何事件过程解释

在你们的情况下,我猜你们有客户端验证——它阻止表单被提交到服务器,这就是为什么并没有对数据库进行实际更新


编辑:DetailsView控件不支持服务器端验证控件。按照此链接了解详细信息

您好,我已在浏览器中禁用javascript,服务器端验证负责自动阻止数据库更新。在这种情况下,您应该将DataView.EnableModelValidation属性设置为True。如果将其设置为False,则验证应停止工作。您好,我已禁用EnableModelValidation,并且数据库仍未更新,这意味着EnableModelValidation对此不负责。然后,我认为您的数据库基于它的not_NULL属性或其他原因引发异常,并且它要么由DateView优雅地处理,要么由您自己处理-这是唯一可能的解释:)