如果重定向,.net将不会清除列表框

时间:2013-05-08 00:11:12

标签: asp.net redirect listbox

我在页面上有一些asp.Net列表框。在我的代码读取了内容并构造了一个sql字符串后,我重定向到一个页面来显示结果。我想在离开页面之前清除列表框,以便在用户想要返回并进行其他搜索时保持整洁。

我可以清除这样的列表框:

    'Clear all selections
    lstDescription.SelectedIndex = -1
    lstManufacturer.SelectedIndex = -1
    lstModelNumber.SelectedIndex = -1
    lstIssuedTo.SelectedIndex = -1
    lstLocation.SelectedIndex = -1

工作,很好,但如果我在下面添加以下内容:

    Response.Redirect("grid.aspx")

框不清除 - 我可以按后退按钮,它们仍然被选中。谁能告诉我为什么asp.net会这样做?任何有关变通方法的建议都会受到欢迎。

2 个答案:

答案 0 :(得分:0)

你试过这个:

  

lstDescription.SelectedItem = Nothing

如果您仍然面对,请告诉我。

答案 1 :(得分:0)

您正在体验浏览器行为,而不是具体的ASP.NET行为。您从重定向重定向并随后通过后退按钮返回的页面由浏览器从缓存中提供,因此保留其设置。

您需要告诉浏览器不要这样做。将此代码添加到Page_Load,IE和FireFox将停止从缓存中提供服务:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    ...

所有浏览器都以不同的方式实现缓存,这超出了您的控制范围,因为它们都根据规则和惯用来解释您在Response中发回的内容。例如,上面的代码段适用于IE和FireFox,但不适用于Chrome。