回发包含修改的列表时 ASP.NET 错误
ASP.NET Errors when PostBack Includes Modified List
我正在使用JavaScript/jQuery将元素动态添加到WebForms页面上的下拉列表中。这工作正常,但是当我将页面发布回服务器时,出现以下错误:
无效的回发或回调参数。 在配置中使用或<%@ 页面启用事件验证="true" %> 启用事件验证。 出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。 如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。
我想我明白这里发生了什么:ASP.NET 正在验证该列表是否与最初提供的列表相同,并检测到它已更改。这是一项安全功能,因为这表示数据是从修改的页面提交的。
但是,在这种情况下,该行为是有效的。而且我不想禁用此功能,因为它对于我页面的其余部分来说是一个很好的安全功能。
有没有办法告诉 ASP.NET 只忽略对这个列表的更改?
编辑:
我的代码位于 Web 用户控件中,因此我认为为控件设置 EnableEventValidation
属性可能是可以接受的。不幸的是,此属性似乎仅适用于整个页面。
我发现我能够通过创建一个自定义的 DropDownList 控件来消除此错误,如下所示:
public class DropDownListNoEventValidation : DropDownList
{
}
这显然创建了一个名为 DropDownListNoEventValidation
的控件,没有属性 SupportsEventValidation
。
结果是消除了我之前遇到的错误。遗憾的是,如果所选值是动态添加到列表中的项目,则 ASP.NET 似乎无法识别所选值。我仍在研究这个问题。
更新:
我最终使用了没有runat="server"
的<select>
元素。这是更多的工作,但似乎是让它按预期工作的最直接的方法。
- 借助asp.net验证或java脚本对多个文本进行验证
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 从javascript调用asp.net codebehind函数
- 使用javascript的Asp.net内容占位符
- 获取ASP.NET Ajax Timer状态
- ASP.NET网络摄像头显示
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- asp.net,包括iss上的javascript slow
- 选择不在GridView-ASP.NET中激发
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 使用ASP.NET将谷歌地图添加到项目中,并从数据库中检索位置
- 有什么“;错误的”;将javascript放在asp.net表单上,而不是放在单独的文件中
- 将Javascript日期转换为ASP.NET日期格式
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- 在asp.net中确认是或否消息
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- asp.net中的验证工具