使用服务器标记未显示动态下拉列表值

时间:2014-07-02 18:20:14

标签: c# asp.net dropdownlistfor

我目前正在使用此代码尝试在asp中填充我的下拉列表。

for (int i = 0; i < items.Count; i++)
{
    models.Add(i+1, items.ElementAt(i).model);
}
ddl_Model.DataTextField = "Value";
ddl_Model.DataValueField = "Key";
ddl_Model.DataSource = models;
ddl_Model.DataBind();             

但是,在使用SelectedItem或SelectedValue时,它总是显示为我的列表为空。

我相信这是因为我在填充之前从一开始就声明了一个空列表。

<h2>Please Select your Model:</h2>
<asp:DropDownList ID="ddl_Model" AppendDataBoundItems="True"  runat="server" >
</asp:DropDownList>

我可以知道如何从下拉列表中获取正确的值吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是ViewState问题。在PostBack事件期间,您的下拉列表基本上不会保留状态。首先要检查是否已启用页面的视图状态。

<asp:Page EnableViewState="True" />

第二件事是检查填充下拉列表的位置。如果你在页面加载事件中绑定,那么确保它是否在!IsPostBack下面

if(!IsPostBack)
{
//your above code
}

第三件事是使用debug,检查在调用ddl_Model.DataBind()代码后是否调用ddl_Model.SelectedIndex。