asp.net – 使用JavaScript重新排列的ListBox元素导致回发时出现事件验证错误

前端之家收集整理的这篇文章主要介绍了asp.net – 使用JavaScript重新排列的ListBox元素导致回发时出现事件验证错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我创建了一个项目交换器控件,包含两个列表框和一些按钮,允许我在两个列表之间交换项目.交换是使用javascript完成的.我还在列表中上下移动项目.基本上,当我将项目移动到右侧的列表框时,我将元素(GUID)的数据键存储在隐藏字段中.在回发时,我只是从字段中读取GUID.一切都很好,但在回发后,我得到以下异常:

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation=”true” %> in a page. For security purposes,this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected,use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

我准备了一个测试应用程序.您所要做的就是下载存档并运行项目.在网页上选择3项,按全部添加,然后将第三个元素向上移动一级,然后点击“按钮”.错误显示出来.关闭事件验证绝不是可以接受的.任何人都可以帮助我,我已经花了两天没有找到解决方案.

TEST APPLICATION

最佳答案
问题是列表的已保存视图状态和回发时收到的数据不匹配.事件验证问题很可能只是由于这种方法可能出现的问题之一. webforms的体系结构不允许这种用途,并且很可能,即使您成功避免了事件验证问题,这种方法也会遇到更多问题.你有几种选择:

1)最简单的是在服务器上进行交换逻辑而不是使用javascript.这样,视图状态将在回发之间保留,并且多次往返服务器的额外开销可能不是问题.

2)如果多次往返服务器是一个问题,请编写一个服务器控件来处理它自己的视图状态.这当然是一种非常吸引人的方法.

3)中间地面方法可以是使用两个简单的html列表(只需编写html标签而不使用asp.net控件),并在客户端维护javascript中隐藏字段中的id列表.在post back上只需解析隐藏字段并提取id忽略html列表.

如果没有针对它的严重论据,我会选择1.

原文链接:https://www.f2er.com/js/429306.html

猜你在找的JavaScript相关文章