第一个下拉列表项选择的Viewstate问题

时间:2011-06-09 01:55:16

标签: asp.net drop-down-menu viewstate selectedindexchanged

在我使用母版页的ASP.NET 4.0网站中,我在web.config中禁用了sitestate:

<pages enableViewState="false" />

我正在尝试仅在绝对必要时启用它。

我遇到了DropDownList控件的问题(没有进行数据绑定,只是硬编码的项目):

    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" onselectedindexchanged="DropDownList1_SelectedIndexChanged" Width="150px" ViewStateMode="Enabled" EnableViewState="True">
        <asp:ListItem>Chocolate</asp:ListItem>
        <asp:ListItem>Strawberry</asp:ListItem>
        <asp:ListItem>Vanilla</asp:ListItem>
    </asp:DropDownList>

即使我已为此特定控件启用了视图状态,但选择第一项时仍有问题:

enter image description here

    protected void DropDownList1_SelectedIndexChanged (object sender, EventArgs e)
    {
        TextBox1.Text = (sender as DropDownList).SelectedValue;
    }

预期的结果是,每当选择“Chocolate”时,TextBox1将显示“Chocolate”。但我所看到的是TextBox1仅在选择草莓或香草时才会改变。在上面的例子中,我选择了Strawberry,然后是Chocolate。

换句话说,DropDownList SelectedIndexChanged在选择第一个项目时没有触发,但在选择第二个或第三个项目时触发。

以下是DropDownList的属性设置:

enter image description here

我从一个空白项目开始尝试相同的代码,页面按预期工作。 (选择第一个项目会触发事件)。

提前感谢任何建议。

2 个答案:

答案 0 :(得分:1)

您似乎无法在web.config中或<pages enableViewState="false" />属性的任何页面指令中设置ViewStateMode

基本上EnableViewState=false会覆盖任何和所有ViewStateMode设置。

此时似乎没有办法在web.config中设置ViewStateMode属性,因此您似乎必须从应用程序中删除任何EnableViewState属性,在所有页面指令中将ViewStateMode属性设置为Disabled

答案 1 :(得分:0)

我想我知道你说的是什么。您希望在页面加载时从下拉列表中显示默认值。如果你愿意,你可以在下拉列表加载时这样做。

protected void DropDownList1_Load(object sender, EventArgs e)
    {
        TextBox1.Text = (sender as DropDownList).Text;
    }