解决使用AJax往DropDownList中动态添加数据时发生,回发或回调参数无效 的问题

花了4个小时终于解决了。

1.把<asp:DropDownList />这种服务器控件,改为:<select id="xxx" runat="server"></select>这种html的服务器

2.由于加了runat=server所以操作上和一般的DropDownList一样,也可以进行bind

3.在提交后取值的时候,这么写:

  ClassID = Request[xxx.UniqueID];

4.如果是在用户控件中,则这么写:

        htmlDown = (System.Web.UI.HtmlControls.HtmlSelect)this.UserControlBlogClass1.FindControl("xxx");
        ClassID 
= Request[htmlDown.UniqueID];

原因分析:

由于动态往DropDownList中添加了新项,导致DropDownList中的项目与隐藏域中记录的项目不符,所以就出现了“回发或回调参数无效”问题。

网上也有说通过 protected override void Render(System.Web.UI.HtmlTextWriter writer)事件,ClientScript.RegisterForEventValidation方法向隐藏域中注册项。我试了好多次,也没有成功。

原文地址:https://www.cnblogs.com/yeagen/p/1354542.html