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