我遇到了一个非常普通的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;
}
}
我预计下拉列表现在会选择index = 0
的默认项目,但所选项目仍然是项目“text2” - 我选择的项目。在这种情况下,this.dropDownList.SelectedIndex = 0;
不起作用。
我完全不理解。有谁可以帮助我?
更新:此行为仅在Firefox中发生,在Chrome / IE中不会发生。
答案 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。