c# - 在 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 被破坏时,我仍然可以通过填充和清空客户端的文本框来触发错误文本。客户端和服务器端的页面验证无法正常工作的问题仍然存在
解决方案
经过一番广泛的挖掘后发现了问题。我ASP:Linkbuttons
在页脚模板中使用,在 UpdatePanel 周围的所有内容都进行了更新后,该模板不再进行验证。即使我ChildrenAsTriggers="False"
在我的 UpdatePanels 上使用它,它也会以某种方式弄乱客户端验证触发器。
我去将按钮移动到模板本身并将它们更改为ASP:Buttons
. 我相信我需要这些按钮是 Linkbuttons,因为普通按钮不会触发带有页脚模板中 FormviewFormView_ItemUpdating
和FormView_ItemInserting
事件的回发,但是现在我在插入和编辑模板中有专用按钮,它们可以再次成为普通按钮。
希望这可以帮助那些面临类似问题的人。
推荐阅读
- python - Altair Hconcat - 是否可以在同一个 HConCat 中为图表配置不同的轴?
- google-apps-script - ImportHTML 按分钟重新计算
- c# - C++/CLI 从 C# Dll 调用函数,回调函数作为参数
- html - Angular:使用条件在页面之间路由
- java - Java:无法覆盖 postVisitDirectory
- css - 移动视图中的 Wordpress 表格最大宽度
- ios - 为什么单元格中的自定义分隔符视图会改变高度?
- python - 在 api 调用中使用 pool.map,再次调用 api
- android - 生成 PDF 文件并附加到电子邮件
- javascript - 如何在 CSS 中悬停在边框周围时更改文本颜色?