2011-11-30 26 views
1

我的問題如下:你可以清除Page.Request.QueryString?

我正在添加一個變量到應該在頁面加載時觸發搜索的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 
    } 

} 

這工作就像一個魅力,但我有一個應該叫你在TextBox指定單元格的Lookup_Cell方法形式的搜索按鈕。我需要讓Page.Request.QueryString爲空,所以下次加載頁面時不會觸發這個特殊的OnLoad。我嘗試過:

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

但是沒有奏效。我尋找其他方法,但找不到明確的答案。

回答

3

您可以做一個簡單的回發檢查,當有回帖時,從您的文本框中獲取字符串。

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 ; 
} 
2

查詢字符串由瀏覽器發送,每個請求都發送到該URL。

這聽起來像你想重定向到一個沒有查詢字符串的URL。

+0

其實沒關係我想我找到了一點搜索做這件事的不同方式。如果(Page.Request.QueryString [「cell」]!= null &&!Page.IsPostBack) 並且這似乎正在工作,則將頁面加載的if語句更改爲 。實際上並沒有改變網址,但它完成了我想要的... – chilleo