我在一件看似简单的事情上遇到了很多麻烦。 在 ASP.NET 网络表单中,我有两个列表框,中间有添加和删除按钮。 用户可以选择一个 ListBox 中的项目并使用按钮来交换它们。
我在客户端使用 javascript 执行此操作。
然后我还有一个保存按钮,当用户对他们的列表感到满意时,我想在服务器端处理它。
问题:首先,当我点击“保存”时出现以下问题:
*
无效的回发或回调参数。使用配置或页面中的 <%@ Page EnableEventValidation="true"%> 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。
*
我读到解决这个问题的方法之一是将我的 ListBoxes 放入 UpdatePanel 中,我这样做了,而且我正在更进一步。
但是,如果用户使用客户端 javascript 更改列表框的内容,现在按钮的 Click 事件的事件处理程序不会运行。如果用户没有更改列表框的内容,处理程序就会执行。
发生了什么事?
我的方法基本上是有缺陷的吗?可能有更好的方法来解决这个问题?
感谢您的帮助!
这是 ASPX 代码:
<table>
<tr>
<td>
<asp:ListBox ID="fromListBox" runat="server" SelectionMode="Multiple" Rows="8" AutoPostBack="false"
DataSourceID="SqlDataSource1" DataTextField="FullName" DataValueField="UserId" CssClass="teamListBox">
</asp:ListBox>
</td>
<td>
<input id="btnAdd" type="button" value="Add >" /><br/>
<br/>
<input id="btnRemove" type="button" value="< Remove" /><br/>
<br/>
</td>
<td>
<asp:ListBox ID="toListBox" runat="server" SelectionMode="Multiple" Rows="8" AutoPostBack="false"
CssClass="teamListBox" DataSourceID="SqlDataSource2" DataTextField="FullName"
DataValueField="UserId" >
</asp:ListBox>
</td>
</tr>
</table>
继承人 javascript,使用 jquery....这工作正常所以不是真正的问题:
$(document).ready(function () {
$("#btnAdd").click(function () {
$("#fromListBox option:selected").appendTo("#toListBox");
});
$("#btnRemove").click(function () {
$("#toListBox option:selected").appendTo("#fromListBox");
});
});
最佳答案
只需转到应用程序中的 Web 配置文件,然后在 pages 部分添加 enableEventValidation="false"。
关于javascript - 使用 javascript 在 ASP.NET 中的列表框之间移动项目,然后在服务器端访问结果的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4903645/