3

在我使用母版页的 ASP.NET 4.0 网站中,我在 web.config 中禁用了站点范围内的视图状态:

<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>

即使我为这个特定的控件启用了视图状态,选择第一个项目还是有问题:

在此处输入图像描述

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

预期的结果是,无论何时选择“巧克力”,TextBox1 都会显示“巧克力”。但我看到的是 TextBox1 只有在选择草莓或香草时才会改变。在上面的示例中,我选择了草莓,然后选择了巧克力。

换句话说,DropDownList SelectedIndexChanged 不会在选择第一个项目时触发,而是在选择第二个或第三个项目时触发。

以下是 DropDownList 的属性设置:

在此处输入图像描述

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

在此先感谢您的任何建议。

4

2 回答 2

1

看来您无法<pages enableViewState="false" />在 web.config 或任何页面指令中设置该ViewStateMode属性才能正常工作。

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

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

于 2011-06-09T04:00:00.337 回答
0

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

protected void DropDownList1_Load(object sender, EventArgs e)
    {
        TextBox1.Text = (sender as DropDownList).Text;
    }
于 2011-06-09T02:21:42.440 回答