0

我之前对RequiredFieldValidator 和类似的印象是它们向您显示错误标签并将Page.IsValid 设置为false,仅此而已。这意味着他们将剩下的任务(防止使用错误的输入数据)留给您。但是今天我意识到如果您使用 DetailsView 将新记录插入数据库,并使用验证器检查 DetailsView 内的 TextBox,它们会自动阻止数据库更新。

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

我正在尝试使用 Reflector 进入 RequiredFieldValidator 以查看它是如何实现的,但我真的不知道在哪里看。有人可以提供一些提示吗?

4

1 回答 1

1

本文详细介绍了 ASP.NET 的验证。

http://msdn.microsoft.com/en-us/library/aa479045.aspx

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

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

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

编辑:DetailsView 控件确实支持服务器端验证控件。按照此链接了解详细信息http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.detailsview.aspx#security

于 2010-11-08T02:02:58.427 回答