我的问题如下:
我正在向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;
但这不起作用。我寻找其他方法,但找不到明确的答案。
答案 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。