DropDownList SelectedIndex не работает в FireFox после обновления страницы - PullRequest
3 голосов
/ 30 марта 2010

У меня есть DropDownList в UpdatePanel, как показано ниже:

<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. Однако, когда я обновляю страницу, помещая курсор в адресную строку и нажимая ввод, все работает нормально (drowdownlist показывает 0). Проблема возникает только в FireFox (у меня версия 3.5.7).

Есть идеи, что может вызвать эту проблему?

Ответы [ 3 ]

3 голосов
/ 17 апреля 2010

Firefox запоминает выбранный индекс каждого выбора в сеансе. Это хорошо для пользователя, но это хлопотно для разработчиков ... У меня та же проблема. Если я найду решение, я опубликую его.

Проверьте это: https://developer.mozilla.org/en/Using_Firefox_1.5_caching

Работает!

В PHP:

<?
    header("cache-control: no-store");
    header("Pragma: no-cache");
?>
1 голос
/ 05 апреля 2012

Вы можете добавить в свои формы атрибут с именем autocomplete и установить его на off, чтобы предотвратить такое поведение в Firefox. Я нашел это самый простой способ решения этой проблемы.

например.

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

Если вас беспокоит, что этот HTML-код недействителен (X), вы можете сделать то же самое, используя jQuery:

$("#myForm").attr("autocomplete", "off");
0 голосов
/ 22 декабря 2010

Для тех, кто сталкивается с этой проблемой "Back-Forward-Cache", этот блог действительно осветил проблему для меня.

...