首页 > 解决方案 > 在 UserControl 内的 UdpatePanel 回发后,RequiredFieldValidators 停止工作

问题描述

我有一个带有 2 个 UpdatePanel 的 webforms 页面:udpGrid用于 gridview 和udpFormViews一个ajaxToolkit:TabContainer围绕 3 个用于从网格插入和编辑记录的选项卡,以及一个带有自己的项目模板的转发器,用于将相关数据编辑到主记录。编辑选项卡在 Page_Load 上不可见。在插入和编辑选项卡内驻留相同的用户控件,其中包含一个 Formview。formview默认设置为插入模式,但有一个插入和编辑项目模板,带有一个用于保存/更新/取消按钮的页脚模板,并且在编辑时用户控件的第二个实例设置为编辑模式并加载并显示。它还包含一个包含插入更新和取消命令按钮的页脚模板,以触发 FormView 的本机插入/更新/取消事件。插入 FormView UserControl 上的 RequiredField valdators 从开始和插入后都可以正常工作,

由于某种原因,插入 FormView UserControl 在任何回发后完全失去了它的验证逻辑,但它是自己的插入,无论是否存在 UserControl 的第二个实例。我没有加载或更改插入 Formview UserControl 的任何内容,我可以继续插入而不会破坏验证,但只要在它之外发生回发,它就会中断。甚至其他 UpdatePanel ( udpGrid) 上的更新也会破坏它,我无法使用 RequiredFieldValidators 在插入 UserControl 客户端或服务器端测试验证。Edit UserControl 仍然会触发其验证器,但除了在屏幕上显示错误文本外,它会忽略它并仍然更新记录,同时也忽略服务器端的 edit-validationgroup 验证。

有谁知道发生了什么?似乎将这些Formvies放在UserControls中会破坏一些东西,而在其他页面上直接使用它不会导致任何问题?

更新:我发现当RequiredFieldValidation 被破坏时,我仍然可以通过填充和清空客户端的文本框来触发错误文本。客户端和服务器端的页面验证无法正常工作的问题仍然存在

标签: c#user-controlsupdatepanelformviewrequiredfieldvalidator

解决方案


经过一番广泛的挖掘后发现了问题。我ASP:Linkbuttons在页脚模板中使用,在 UpdatePanel 周围的所有内容都进行了更新后,该模板不再进行验证。即使我ChildrenAsTriggers="False"在我的 UpdatePanels 上使用它,它也会以某种方式弄乱客户端验证触发器。

我去将按钮移动到模板本身并将它们更改为ASP:Buttons. 我相信我需要这些按钮是 Linkbuttons,因为普通按钮不会触发带有页脚模板中 FormviewFormView_ItemUpdatingFormView_ItemInserting事件的回发,但是现在我在插入和编辑模板中有专用按钮,它们可以再次成为普通按钮。

希望这可以帮助那些面临类似问题的人。


推荐阅读