浏览器历史记录中的ASP.Net下拉值不正确

时间:2015-09-17 22:05:16

标签: c# asp.net .net .net-4.5

我无法相信我以前从未注意到这一点,但是搜索并没有带来任何关于这种奇怪的事情。

在下面的代码中,如果您循环浏览下拉选项(按顺序选择2,3,4,5),您将看到标签中显示的正确值。

现在,如果您点击浏览器的后退按钮,您将看到" Five"在下拉菜单中,"您选择了第4项"在标签上。

再次点击浏览器的后退按钮,您会看到"四"在下拉菜单中"您选择了项目编号3"

再次点击会产生相同的不匹配,你会看到" Three"在下拉列表中"您选择的项目编号为2"在标签上。

是什么给出的?我尝试设置一个jquery触发器来执行下拉列表回发,希望这会给浏览器时间注册"注册"事实上,下拉值发生了变化 - 但产生了与上述相同的结果

"代码"在这里:

ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Test_DropdownHistory._default"  %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddlHistoryTest" runat="server" OnSelectedIndexChanged="ddlHistoryTest_SelectedIndexChanged" AutoPostBack="true">
            <asp:ListItem Text="One" Value="One" />
            <asp:ListItem Text="Two" Value="Two" />
            <asp:ListItem Text="Three" Value="Three" />
            <asp:ListItem Text="Four" Value="Four" />
            <asp:ListItem Text="Five" Value="Five" />
        </asp:DropDownList>
    </div>

    <div>
        <asp:Label ID="lblHistoryTest" runat="server" Text="This is the default text" />
    </div>
    </form>
</body>
</html>

CS

public partial class _default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void ddlHistoryTest_SelectedIndexChanged(object sender, EventArgs e)
    {
        lblHistoryTest.Text = "you selected item number " + ddlHistoryTest.SelectedValue;
    }
}

1 个答案:

答案 0 :(得分:0)

我觉得那天我的GoogleFu已经关闭了。在考虑之后,我意识到我应该关注JavaScript / HTML方面的事情。我做了一个,我很快就找到了所有地方的S / O答案。我把它粘贴到全局脚本文件中并且在我的路上:

$(document).ready(function () {
    $("select").each(function () {
        $(this).val($(this).find('option[selected]').val());
    });
})

在此处找到:Select menu not being restored when Back button used