DropDownList SelectedIndex在页面刷新后无法在FireFox中工作

时间:2010-03-30 14:09:59

标签: firefox drop-down-menu updatepanel selectedindex

我在UpdatePanel中有DropDownList,如下所示:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:DropDownList ID="DropDownList1" runat="server">
            </asp:DropDownList>
            <div>
                Index: <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

在我的代码隐藏中,我有这个简单的代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            FillDropDownList();
        }
    }

    private void FillDropDownList()
    {
        for (int i = 0; i < 10; i++)
        {
            DropDownList1.Items.Add(new ListItem(i.ToString(), i.ToString()));
        }
        DropDownList1.SelectedIndex = 0;

        Label1.Text = DropDownList1.SelectedIndex.ToString();
    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Label1.Text = DropDownList1.SelectedIndex.ToString();
    }

问题是:我在列表中选择一个大于0的项(例如5),标签显示值5.但是当我刷新页面时,通过点击firefox中的刷新按钮,标签显示值0( ,因为它应该)但下拉列表显示5.我检查页面html源和下拉列表已选择值0,但显示5.但是,当我刷新页面时,将光标放在地址栏并按Enter everythig工作正常(drowdownlist显示0)。问题只发生在FireFox中(我的版本是3.5.7)。

任何可能导致此问题的想法?

3 个答案:

答案 0 :(得分:3)

Firefox会记住会话中每个选择的selectedIndex。这对用户来说很好,但对开发人员来说却很麻烦......我遇到了同样的问题。如果我找到解决方案,我会发布它。

检查一下: https://developer.mozilla.org/en/Using_Firefox_1.5_caching

有效!

在PHP中:

<?
    header("cache-control: no-store");
    header("Pragma: no-cache");
?>

答案 1 :(得分:1)

您可以向名为autocomplete的表单添加属性,并将其设置为off以防止在Firefox中出现此行为。我发现这是解决这个问题的最简单方法。

例如

<form id="myForm" action="/submithandler/" method="get" autocomplete="off">
...
</form>

如果您担心这不是有效的(X)HTML,那么您可以使用jQuery做同样的事情:

$("#myForm").attr("autocomplete", "off");

答案 2 :(得分:0)

对于遇到这种“后退缓存”问题的人来说,this blogpost对我来说真的很有启发性。