Asp.net Dropdownlist selectedindex不';无法进行页面刷新

Asp.net Dropdownlist selectedindex不';无法进行页面刷新,asp.net,drop-down-menu,pageload,Asp.net,Drop Down Menu,Pageload,我对一个非常普通的ASP.NET下拉列表有问题。 我在页面中有一个带有AutoPostback=false的下拉列表。 以及生成dropdownlist内容的代码: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.dropDownList.Items.Add(new ListItem("text1", "value1")); th

我对一个非常普通的ASP.NET下拉列表有问题。 我在页面中有一个带有
AutoPostback=false
的下拉列表。 以及生成dropdownlist内容的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        this.dropDownList.Items.Add(new ListItem("text1", "value1"));
        this.dropDownList.Items.Add(new ListItem("text2", "value2"));
        this.dropDownList.SelectedIndex = 0;
    }
}
  • 运行页面,然后选择第二个选项:text2
  • 之后,按F5,这将进行页面加载(注意,我还没有进行任何回发,只需更改Dropdownlist的选定项并按F5)
我希望dropdownlist现在会选择索引为0的默认项,但所选项仍然是我选择的项“text2”。在这种情况下,
this.dropDownList.SelectedIndex=0不起作用

我完全不明白。有人能帮我吗


更新:此行为仅在Firefox中发生,在Chrome/IE中不会发生。

当您按F5键时,它将随请求一起发送帖子标题。
您的最后一个请求是选择第二个选项。这样就被选中了

如果您再次键入url,或在地址栏中按enter键;您将不会发送post数据。
在这种情况下,您选择的索引将为0。

似乎您误解了回邮的含义;这并不意味着只是一次页面刷新。当您在浏览器中点击F5时,原始请求将发送到服务器,
Page.IsPostBack
将为false

如果要执行实际回发,请将
asp:Button
服务器控件添加到页面并单击它(或者只需在下拉列表上设置
AutoPostBack=true


Firefox似乎正在进行某种客户端缓存,因此当您点击F5时,它不会再次往返于服务器。您可以通过在页面加载时重置
select
元素来解决此问题

<script type='text/javascript'>
    document.getElementById('<%= dropDownList.ClientID %>').selectedIndex = 0;
</script>

document.getElementById(“”)。selectedIndex=0;

(注意:将其放在页面底部,以便在加载文档后执行。)

当执行自动回写时,如果(!isPostBack)块未命中,则页面将显示选中的txt2移动>this.dropDownList.SelectedIndex=0;走出去!ispostback Block,但我正在执行AutoPostBack=false,代码this.dropDownList.SelectedIndex=0;被打是我的错我没法读那本书真的很有趣。那么,有没有一种解决方案可以忘记最后一个请求,只选择我想要的第一个项目?F5意味着重新发送最后一个请求。您可以查看html5历史api。这可能会有帮助。您还可以在javascript中监听F5并设置
location.href
。我知道了您的想法,似乎使用javascript捕获F5并重定向到同一页面是最简单的方法。我希望JavaScript也知道用户何时按下浏览器中的刷新按钮。结果表明,您的回答不正确,因为我还没有进行任何回发,所以我的最后一个请求是第一次加载。谢谢您的解释。我在这里试图做的是处理用户点击F5按钮(或按浏览器中的刷新按钮)的情况。@user1514431我更新了我的答案,以便更好地回答您的问题。太好了!我这样做也是为了和FF合作。但我也在寻找更好的解决方案,因为这种行为不仅发生在dropdownlist中,而且发生在页面中的每个控件(文本框、复选框…)。至少我们找到了一个解决方案作为最后的手段。