从 JavaScript 添加 asp.net 下拉列表项会导致页面回发错误

Posted

技术标签:

【中文标题】从 JavaScript 添加 asp.net 下拉列表项会导致页面回发错误【英文标题】:Add asp.net dropdownlist item from JavaScript causes page postback error 【发布时间】:2011-06-28 18:59:53 【问题描述】:

设计是:

所有元素都在 updatepanel 中。

单击<tr> 列表以触发javascript 函数以将新<option> 添加到asp dropdownlist

但是, 当我点击其他按钮回调到服务器时,我收到一条错误消息:

未捕获 Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: 无效的回发或回调参数。 使用启用事件验证 在配置中或 在一个 页。为了安全起见,这 功能验证参数 回发或回调事件起源 从服务器控制 最初渲染它们。如果数据 是有效的和预期的,使用 ClientScriptManager.RegisterForEventValidation 方法来注册 回发或回调数据 验证。

我理解这个问题。我需要在任何其他postback 之前让服务器端知道下拉列表的更改。

在这种情况下将验证设置为 false 将不起作用,下拉菜单无论如何都会丢失新项目。

我做了一些研究,以及可能的解决方案:

1)使用ViewState? Request Form? 谁能举个例子?

2)在服务器端添加下拉列表项。但我想让整个 tr 行可点击以触发事件。我可以点击 tr 并开火吗?它的第一个孩子linkbutton 或其他地方的linkbutton

3)我试过Jquery.ajax和webmethod,它可以触发服务器事件,但由于所有方法都是static (shared),它不允许我编辑downdownlist实例。

任何类型的解决方案都会有所帮助!!

问候,

【问题讨论】:

当点击 时,自定义的 Javascript 函数是否会回调(ASP.NET-AJAX)到服务器以更新下拉列表?还是完全不涉及服务器的客户端选项添加功能? 【参考方案1】:

您应该触发一个服务器端事件处理程序以从 javascript 更新列表,如本文所述。 http://codeclimber.net.nz/archive/2007/06/26/how-to-refresh-an-updatepanel-from-javascript.aspx

【讨论】:

以上是关于从 JavaScript 添加 asp.net 下拉列表项会导致页面回发错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Javascript 中以自然方式添加后,我无法在 asp.net 中获取 Listbox 的值

如何在没有 ASP.NET Core 的情况下将 Json 数据从控制器发送到 javascript?

ASP.NET MVC 3 - 发布前从集合中添加/删除

如何使用asp.net MVC中的href从javascript在新窗口中打开打开的窗口

添加 toastr javascript asp.net webform

ASP.net:将Javascript标记添加到页眉。