我有一个带有两个下拉列表的webcontrol。当你从第一个选择的东西时,第二个相应地填充。回帖后,我得到旧的:
无效的回发或回调参数。事件验证已启用 用在 配置或<%@ Page EnableEventValidation =“true”%>在一个 页。为安全起见,这个 功能验证参数 回发或回调事件源自 从服务器控制那个 最初渲染它们。如果数据 是有效的和预期的,使用 ClientScriptManager.RegisterForEventValidation 注册方法 回发或回调数据 验证
我知道这个问题是什么;我正在使用意外数据填充下拉列表。我已经阅读了错误并找到了修复程序,例如重写Render方法,您为每个新的下拉列表项调用“RegisterForEventValidation”。但是,我不能这样做,因为我正在重新填充下拉客户端。
理论上,如果我添加了可能包含在下拉列表中的所有可能值(大约3000),我可以使用此方法,但我真的不想这样做。
是否有其他方法可以解决此错误,而无需禁用EventValidation或填充下拉列表服务器端?
答案 0 :(得分:0)
您可能必须使用基本的html选择并在Request.Form
集合中查找所选值。
对于DropdownList
我恐怕你别无选择,只有那些。
答案 1 :(得分:0)
不幸的是,不支持在每个控件的基础上禁用事件验证。但根据我的经验,在页面上禁用事件验证并不是那么糟糕。
无论是否启用了事件验证,明智的开发人员都会验证所有输入。像the AntiXSS library这样的工具可以派上用场来识别和/或清理潜在的恶意输入。
如果您已经在关注小心验证表单输入的实践,那么禁用开箱即用的ASP.NET验证行为应该是一个可行的解决方案,不会给您的项目带来很大的风险。
答案 2 :(得分:0)
渲染方法可以解决您的问题。但是,更快的是子类化。什么都不做,但是将DropDownList子类化并在aspx页面中使用它。
我做到了,并且工作了。