Server.Execute()在当前页面中打开新页面

时间:2017-04-05 05:26:57

标签: c# asp.net query-string

我使用了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页内容都显示在一个页面中。

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");