DropDownList.SelectedItem有时为null,有时不在回发后,EnableViewState = False

时间:2010-01-07 11:28:19

标签: asp.net

我有两个非常相似的.aspx页面。它们都包含DropDownList控件。 DropDownList控件的EnableViewState都设置为False:

<asp:DropDownList ID="ddl" runat="server" EnableViewState="False" />

两个页面都有一个LinkBut​​ton。在btn_Click处理程序中,如果我尝试访问ddl.SelectedItem属性(据我所知,由于EnableViewState = False应该为null,我是否正确?),它在一个页面上为null,但不为null(它在另一页上具有正确的值)。你能指点一下这怎么可能吗?

string txt = ddl.SelectedItem.Text; // SelectedItem sometimes null, other times not

这两个页​​面的下拉列表之间的区别在于,在一种情况下,使用AjaxToolkit的CascadingDropDown控件填充下拉列表(在这种情况下,尽管EnableViewState属性设置为false,但SelectedItem不为null),在另一种情况下,下拉列表在Page_Load属性中填充项目,在if-block内,检查IsPostBack是否为false(项目仅在第一个请求中填充,在回发后我不需要它们。)

谢谢。

3 个答案:

答案 0 :(得分:1)

CascadingDropDown不支持启用视图状态设置。如果您需要null,则应在页面加载或类似事件时将其重置为null。

答案 1 :(得分:0)

如果你有通过JavaScript填充下拉列表的东西,那么ASP.NET将看到该值,无论它是如何到达那里的。

答案 2 :(得分:0)

当您更改值时,看起来所选索引会回发到服务器;一旦在列表中应用了项目,就会应用所选的索引属性,因此如果您没有项目,我认为在某些项目添加到列表之前不会应用它。因此,如果再次绑定列表,并从列表中选择一个值,并重新绑定下拉列表,则它将应用所选索引。可能是这样。

HTH