javascript中添加到<select>的选项在回发中丢失

Bil*_*lly 13 javascript asp.net

我在客户端通过javascript向select元素添加了一些选项,并且无法在回发中获取它.

我该怎么办?

用于添加选项的代码:

<asp:DropDownList ID="ddlProduct" runat="server"></asp:DropDownList>

var ddlProduct = "#"+"<%= ddlProduct.ClientID %>";

$(ddlProduct).append($("<option></option>").html(product_name)
Run Code Online (Sandbox Code Playgroud)

Kir*_*tan 18

使用JavaScript添加到下拉列表的选项永远不会到达服务器端,更不用说在回发期间保留.选项存储在ViewState中.您正在使用客户端的DOM修改下拉列表,但是ViewState呢?您没有对其进行修改,因此当从ViewState重新加载下拉列表的状态时,ASP.NET不会知道对下拉列表进行了任何更改.

可能的解决方法

一种方法是使用隐藏变量来存储您添加到下拉列表中的值.当控件进入服务器端时,您可以检查此隐藏字段的值,并在必要时将项目添加到下拉列表中.

您可以将项目存储在JSON格式的字符串中,并使用.NET Framework的DataContractJsonSerializer类(如果您使用的是.NET Framework> = 3.5)在服务器端解析此字符串.如果您不使用.NET Framework 3.5,那么您可以使用以下分隔符 - text1,text2|value1,value2

  • 我使用Request.Form [ddlProduct.UniqueID]来获取值并且它可以工作.JSON也是一种很好的方法. (10认同)
  • 该死的Asp.net是邪恶的. (3认同)