我无法相信我以前从未注意到这一点,但是搜索并没有带来任何关于这种奇怪的事情。
在下面的代码中,如果您循环浏览下拉选项(按顺序选择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;
}
}
答案 0 :(得分:0)
我觉得那天我的GoogleFu已经关闭了。在考虑之后,我意识到我应该关注JavaScript / HTML方面的事情。我做了一个,我很快就找到了所有地方的S / O答案。我把它粘贴到全局脚本文件中并且在我的路上:
$(document).ready(function () {
$("select").each(function () {
$(this).val($(this).find('option[selected]').val());
});
})