【问题标题】:RequiredFieldValidators stop working after UdpatePanel postback inside UserControl在 UserControl 内的 UdpatePanel 回发后,RequiredFieldValidators 停止工作
【发布时间】:2020-08-21 08:49:49
【问题描述】:

我有一个带有 2 个更新面板的网络表单页面:udpGrid 用于网格视图,udpFormViews 带有一个 ajaxToolkit:TabContainer 围绕 3 个选项卡,用于从网格中插入和编辑记录,以及一个带有自己的项目模板的转发器,用于编辑相关数据到主记录。编辑选项卡在 Page_Load 上不可见。在插入和编辑选项卡内驻留相同的用户控件,其中包含一个 Formview。 formview默认设置为插入模式,但有一个插入和编辑项目模板,带有一个用于保存/更新/取消按钮的页脚模板,并且在编辑时用户控件的第二个实例设置为编辑模式并加载并显示。它还包含一个包含插入更新和取消命令按钮的页脚模板,以触发 FormView 的本机插入/更新/取消事件。插入 FormView UserControl 上的 RequiredField valdators 从开始和插入后都可以正常工作,但是一旦我进行回发以显示编辑 FormView 用户控件或第三个选项卡上的中继器(与包含 UserControl 的用户控件无关),RequiredFieldValidators在插入表单视图上完全停止工作,甚至在验证它的插入验证组的代码中也返回有效,而 requiredField 在代码中显示空文本。

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

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

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

【问题讨论】:

    标签: c# user-controls updatepanel formview requiredfieldvalidator


    【解决方案1】:

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

    我将按钮移动到模板本身并将它们更改为ASP:Buttons。我相信我需要这些按钮是链接按钮,因为普通按钮不会触发页脚模板中 Formview 的FormView_ItemUpdatingFormView_ItemInserting 事件的回发,但现在我在插入和编辑模板中有专用按钮又可以是普通的Button了。

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

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 2010-10-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多