在UserControl

问题描述

我有一个Webforms页面,其中包含2个UpdatePanels:udpGrid用于gridview,udpFormViews带有ajaxToolkit:TabContainer并带有用于围绕网格插入和编辑记录的3个选项卡,以及一个带有它的中继器自己的项目模板,用于将相关数据编辑到主记录中。编辑选项卡在Page_Load上不可见。在“插入和编辑”选项卡内部,包含一个包含Formview的用户控件。默认情况下,formview设置为插入模式,但是具有一个插入和编辑项模板,以及用于保存/更新/取消按钮以及编辑时的页脚模板。usercontrol的第二个实例被设置为编辑模式并加载并显示。它还包含一个页脚模板,该页脚模板包含insert udpate和cancel命令按钮,以触发FormView的本机插入/更新/取消事件。插入FormView UserControl上的RequiredField valdators从开始和插入后都可以正常工作,但是一旦我回发以显示Edit FormView usercontrol或在第3个选项卡上的Repeater(与包含UserControl的Usercontrol没有关系),RequiredFieldValidators在insert formview上完全停止工作,甚至在代码验证中,insert-validationgroup也返回有效,而requiredField在代码中显示空文本。

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

有人知道发生了什么吗?似乎将这些Formvies放到UserControls中会破坏某些东西,而在其他页面上简单地使用它却不会引起问题?

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

解决方法

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

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

希望这可以帮助遇到类似问题的人。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...