我使用 server.execute 在 URL 中隐藏我的查询字符串,但我发现了另一个问题,当我在第 1 页并单击将我转移到第 2 页的按钮时,第 1 页的内容仍然显示在第 2 页内容的页面中。这两个页面都显示给我看。我该如何解决这个问题?
在第 1 页中,有一个按钮,我在单击事件中添加此代码。
protected void Button1_Click(object sender, EventArgs e)
{
Server.Execute("Page2.aspx?Name=john");
}
在第 2 页中,有一个读取查询字符串值的文本框。
TextBox1.Text = Request.QueryString["Name"].ToString();
我在查询字符串中发送多个值,但这只是一个示例。 但是,单击应将我转到第 2 页的按钮后,第 1 页和第 2 页的内容都显示在一个页面中。
使用 Server.Transfer 而不是 Server.Execute。查看此内容以了解差异。两者的区别
使用 Server.Execute 时,URL 将作为参数传递给它,并且控件将移动到此新页。代码的执行发生在新页面上。代码执行结束后,控件将返回到初始页,紧跟在调用它的位置之后。但是,在Server.Transfer的情况下,它的工作方式非常相似,区别在于执行在新页面本身停止(意味着控件不会返回到调用页面(。 在这两种情况下,浏览器中的 URL 仍然是第一个页面 URL(不会刷新到新页面 URL(,因为浏览器
不会这样做。
由于server.execute将控制权转移回原始页面并继续执行它,因此您会看到两个页面的输出。要完全转移请求,请使用服务器。转移请求
Page1.aspx:将查询字符串值添加为NameValueCollection
NameValueCollection nv = new NameValueCollection();
nv.Add("Name","john");
Server.TransferRequest("Page2.aspx",true,"GET", nv);
第2页.aspx:从Request.Header
中获取您的值
TextBox1.Text = Request.Headers.Get("Name");