asp.net - 下拉列表 selectedindex 在页面刷新时不起作用

标签 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 中不会发生。

    最佳答案

    您似乎误解了回发的含义;这并不意味着只是页面刷新。当你在浏览器中按 F5 时,原始请求将被发送到服务器,并且 Page.IsPostBack会是假的。

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

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

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

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

    关于asp.net - 下拉列表 selectedindex 在页面刷新时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311520/

    相关文章:

    asp.net - 如何查看 mdf 文件中的数据

    javascript - 三.js在浏览器中加载3d模型的问题

    javascript - 根据 Jquery 或 Javascript 中先前的选择下拉列表显示隐藏选择选项

    在页面代码后面的 Page_Load 上引用 ASP.NET 用户控件实例时为空

    javascript - 如何在 Blade 文件 laravel 5.6 中获取当前路由名称

    javascript - ASPxClientGridView.ApplyFilter 执行其工作后触发的客户端事件

    javascript - 使用服务器端系统时间的客户端时钟

    javascript - 在 2 个下拉菜单列表中选择选项?

    css 下拉菜单消失在内容后面

    c# - asp.net: (c# client-side) 如何访问页面加载后创建的 html 元素?