3

以下に示すように、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 が表示されます。ページの html ソースを確認したところ、ドロップダウンで値 0 が選択されていましたが、5 が表示されていました。 . この問題は FireFox でのみ発生します (バージョン 3.5.7 を使用しています)。

この問題を引き起こす可能性のあるアイデアはありますか?

4

3 に答える 3

3

Firefox は、セッション内の各選択の selectedIndex を記憶しています。ユーザーにとっては良いことですが、開発者にとっては面倒です... 私も同じ問題を抱えています。解決策が見つかったら、投稿します。

これをチェックしてください: https://developer.mozilla.org/en/Using_Firefox_1.5_caching

できます!

PHP の場合:

<?
    header("cache-control: no-store");
    header("Pragma: no-cache");
?>
于 2010-04-17T14:33:45.043 に答える
1

と呼ばれるフォームに属性を追加し、autocompleteそれを に設定してoff、Firefox でのこの動作を防ぐことができます。これがこの問題を解決する最も簡単な方法であることがわかりました。

例えば。

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

これが有効な (X)HTML ではないことが心配な場合は、jQuery を使用して同じことを行うことができます。

$("#myForm").attr("autocomplete", "off");
于 2012-04-05T15:35:20.723 に答える
0

この「Back-Forward-Cache」の問題に遭遇した人にとって、このブログ投稿は私にとってこの問題を本当に啓発しました。

于 2010-12-22T10:15:17.923 に答える