填充下拉列表客户端。获得回发验证错误

时间:2010-09-07 14:44:54

标签: c# javascript asp.net drop-down-menu

我有一个带有两个下拉列表的webcontrol。当你从第一个选择的东西时,第二个相应地填充。回帖后,我得到旧的:

  

无效的回发或回调参数。事件验证已启用   用在   配置或<%@ Page   EnableEventValidation =“true”%>在一个   页。为安全起见,这个   功能验证参数   回发或回调事件源自   从服务器控制那个   最初渲染它们。如果数据   是有效的和预期的,使用   ClientScriptManager.RegisterForEventValidation   注册方法   回发或回调数据   验证

我知道这个问题是什么;我正在使用意外数据填充下拉列表。我已经阅读了错误并找到了修复程序,例如重写Render方法,您为每个新的下拉列表项调用“RegisterForEventValidation”。但是,我不能这样做,因为我正在重新填充下拉客户端。

理论上,如果我添加了可能包含在下拉列表中的所有可能值(大约3000),我可以使用此方法,但我真的不想这样做。

是否有其他方法可以解决此错误,而无需禁用EventValidation或填充下拉列表服务器端?

3 个答案:

答案 0 :(得分:0)

您可能必须使用基本的html选择并在Request.Form集合中查找所选值。

对于DropdownList我恐怕你别无选择,只有那些。

答案 1 :(得分:0)

不幸的是,不支持在每个控件的基础上禁用事件验证。但根据我的经验,在页面上禁用事件验证并不是那么糟糕。

无论是否启用了事件验证,明智的开发人员都会验证所有输入。像the AntiXSS library这样的工具可以派上用场来识别和/或清理潜在的恶意输入。

如果您已经在关注小心验证表单输入的实践,那么禁用开箱即用的ASP.NET验证行为应该是一个可行的解决方案,不会给您的项目带来很大的风险。

答案 2 :(得分:0)

渲染方法可以解决您的问题。但是,更快的是子类化。什么都不做,但是将DropDownList子类化并在aspx页面中使用它。

我做到了,并且工作了。