0

我有一个使用 javascript 填充的 ASP.Net 下拉列表,如下所示:

下拉列表:

<asp:DropDownList ID="Ddl" runat="server" AutoPostBack="true"
       EnableViewState="true"></asp:DropDownList>

用“文本”填充下拉列表的 javascript 代码是:

var select = document.getElementById('<%= Ddl.ClientID %>');
var option = document.createElement("option");
option.value = '1';
option.innerHTML = "Text";
select.appendChild(option);

它在客户端填充得很好。我添加了一个应该在服务器端运行的按钮。在服务器端,当我尝试检索 ddl 选定值时;它给出了一个异常(对象引用未设置为对象的实例。)

我知道一旦表单发送到服务器,ASP.Net ddl 控件就会丢失内容?我将如何解决这个问题?我尝试将值放在隐藏字段中并尝试使用Request.Form["HiddenField"].toString();,但它给出了相同的错误。有什么帮助吗?

4

1 回答 1

2

正如您所说,您无法在客户端填充下拉列表并让服务器端知道ListItem对象在那里。那是因为它们不会被发送回服务器:只有选定的值会。

即使不使用DropDownList. 将下拉列表创建为 HTMLselect标记。请务必设置该name属性(否则它不会在回发时被拾取)。然后使用该Request.Form集合访问 HTML 的选定值select

DropDownList考虑到您告诉我们的内容,我能想到的使用 a 的唯一原因是,如果您打算在某个时候将它绑定到服务器端,从服务器端数据,或者如果您想更改它的外观基于服务器端计算,但不想设置 Ajax 调用。如果您不想做这些事情中的任何一个,aselect可能会更好地为您服务。

于 2013-01-16T13:28:59.447 回答