你能清除Page.Request.QueryString吗?

时间:2011-11-30 23:04:42

标签: c# asp.net http

我的问题如下:

我正在向URL添加一个变量,该变量应在页面加载时触发搜索,具体取决于变量中的内容。如果您在没有变量的情况下导航到同一页面,那么它不应该在页面加载时执行任何特殊操作。我认为以下可以解决这个问题:

protected void Page_Load(object sender, EventArgs e)
{

    if (Page.Request.QueryString["cell"] != null)
    {
        txtCell.Text = Page.Request.QueryString["cell"];
        Lookup_Cell(Page.Request.QueryString["cell"]);

        //BUGGED, this keeps running when i try a new search
        //Page.Request.QueryString["cell"] = null;
    }else{
        //do nothing, empty string
    }

}

这就像一个魅力,但我有一个表单的搜索按钮,应该为Lookup_Cell中指定的单元格调用TextBox方法。我需要让Page.Request.QueryString为空,所以下次加载页面时不会触发这个特殊的OnLoad。我试过了:

Page.Request.QueryString["cell"] = null;

但这不起作用。我寻找其他方法,但找不到明确的答案。

2 个答案:

答案 0 :(得分:3)

您可以进行简单的PostBack检查,当有回发帖时,从文本框中获取字符串。

string cFinalQueryString = "";

if(!IsPostBack)
{
    if (Page.Request.QueryString["cell"] != null)
    {
        cFinalQueryString = Page.Request.QueryString["cell"];
    }else{
        //do nothing, empty string
    }
}
else
{
    cFinalQueryString = txtCell.Text;
}

txtCell.Text = cFinalQueryString;
Lookup_Cell(cFinalQueryString);

或者替代方案,当您回发后,使用新的“单元格”查询重定向到新页面

if(IsPostBack && Page.Request.QueryString["cell"] != txtCell.Text)
{
    Responce.Redirect("CurrentPage.aspx?cell=" + UrlEncode(txtCell.Text), true);
    return ;
}

答案 1 :(得分:2)

浏览器会根据对该URL的每个请求发送查询字符串。

听起来你想要重定向到没有查询字符串的URL。