Dropdownlist selectedindex不适用于页面刷新

时间:2012-09-07 03:57:46

标签: asp.net drop-down-menu pageload

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

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)

我预计下拉列表现在会选择index = 0的默认项目,但所选项目仍然是项目“text2” - 我选择的项目。在这种情况下,this.dropDownList.SelectedIndex = 0;不起作用。

我完全不理解。有谁可以帮助我?

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

2 个答案:

答案 0 :(得分:2)

您似乎误解了回发的含义; 只是页面刷新。当您在浏览器中点击F5时,原始请求将被发送到服务器,Page.IsPostBack false

如果您想要进行实际的回发,请在页面中添加asp:Button服务器控件并单击它(或者只在DropDownList上设置AutoPostBack=true)。


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

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

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

答案 1 :(得分:1)

当您按F5时,它会发送帖子标题以及请求 您的上一个请求是选择第二个选项。这样就被选中了。

如果您再次输入网址,或在地址栏中按Enter键;你不会发送帖子数据。 在这种情况下,您的SelectedIndex将为0。