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



我使用 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");

最新更新