0

我有一个从数据库填充的 asp 保管箱:

这是aspx

<asp:DropDownList runat="server" ID="ddl_last" AppendDataBoundItems="true">

这是cs:

  ddl_last.DataSource = eggsContext.Customers;
        ddl_last.DataValueField = "last_name";
        ddl_last.DataTextField = "last_name";
        ddl_last.DataBind();

当我尝试从 c# 代码中获取 ddl_last.SelectedValue 时,我什么也没得到。事实上 ddl_last.Items 计数为 0!当我不从代码中填充它,而是在 aspx 中写入

<asp:ListItem Text="example" />

一切正常。

我可以通过编写 document.getElementById('ddl_last').value 从 javascript 获取值;

但我想知道微软这次搞砸了什么,这不是从背后的代码工作?

4

2 回答 2

1

在评论中看到您的问题后,我认为这可能会帮助您解决它:

要禁用页面的视图状态并为页面上的特定控件启用它,请将页面控件的 EnableViewState 属性设置为 true,将页面的 ViewStateMode 属性设置为 Disabled,并将控件的 ViewStateMode 属性设置为启用。

http://msdn.microsoft.com/en-us/library/system.web.ui.control.viewstatemode.aspx

另请注意,在禁用 ViewState 的情况下,您仍然可以通过以下方式检索发布的值

if (Request["ddl_last"] != null)
    val = Request["ddl_last"];
于 2012-06-19T16:51:17.430 回答
0

看看这个问题,当您尝试访问 ddl_last.SelectedValue 和 ddl_last.Items 计数时,您的 ddl_last 列表似乎没有被数据绑定。确保在绑定数据后访问这些值

于 2012-06-19T16:48:03.173 回答