如何在ASP.NET中刷新页面? (让它通过代码重新加载)

时间:2009-07-30 13:12:36

标签: asp.net

如何在ASP.NET中刷新页面? (让它通过代码重新加载)

我宁愿不使用Response.Redirect(),因为我不知道我将在哪个页面,因为它位于sharepart内部的sharepart内的用户控件内。

14 个答案:

答案 0 :(得分:378)

在我的用户控件中,更新数据后我会这样做:

  Response.Redirect(Request.RawUrl);    

确保重新加载页面,并且它可以从用户控件中正常工作。您使用RawURL而不是Request.Url.AbsoluteUri来保留可能包含在请求中的任何GET参数。

您可能不想使用:__doPostBack,因为许多aspx页面在执行回发时表现不同。

答案 1 :(得分:44)

将页面呈现给客户端后,您只有两种强制刷新的方法。 一个是Javascript

setTimeout("location.reload(true);", timeout);

第二个是Meta标签:

<meta http-equiv="refresh" content="600">

您可以在服务器端设置刷新间隔。

答案 2 :(得分:40)

这可能会迟到,但我希望它可以帮助那些正在寻找答案的人。

您可以使用以下行来执行此操作:

Server.TransferRequest(Request.Url.AbsolutePath, false);

尽量避免使用Response.Redirect,因为它会增加流程中的步骤。它实际上做的是:

  1. 使用重定向标头
  2. 发回页面
  3. 浏览器会重定向到目标网址。
  4. 正如你所看到的,同样的结果需要2次而不是1次旅行。

答案 3 :(得分:37)

试试这个:

Response.Redirect(Request.Url.AbsoluteUri);

答案 4 :(得分:13)

使用javascript的location.reload()方法。

<script type="text/javascript">
  function reloadPage()
  {
    window.location.reload()
  }
</script>

答案 5 :(得分:8)

在asp.net中有各种刷新页面的方法,如...

Java脚本

 function reloadPage()
 {
     window.location.reload()
 }

代码背后

Response.Redirect(Request.RawUrl)

元标记

<meta http-equiv="refresh" content="600"></meta>

页面重定向

Response.Redirect("~/default.aspx"); // Or whatever your page url

答案 6 :(得分:6)

如果您不想进行整页刷新,那么如何在UpdatePanel中包装要刷新的内容然后进行异步回发呢?

答案 7 :(得分:3)

我个人需要确保页面保持状态,因此所有文本框和其他输入字段都保留其值。通过执行元刷新它就像一个新帖子,IsPostBack始终为false,因此所有控件都再次处于初始化状态。要保留状态,请将其放在Page_Load()的末尾。在页面上创建一个隐藏按钮,其中包含一个事件,例如butRefresh with event butRefresh_Click(...)。此代码在页面上设置一个计时器来触发回发,就像用户单击刷新按钮一样。保留所有州和会议。请享用! (例如,如果在回发时收到错误,您可能需要将指令放在@Page标头EnableEventValidation =“false”中。

//tell the browser to post back again in 5 seconds while keeping state of all controls
ClientScript.RegisterClientScriptBlock(this.GetType(), "refresh", "<script>setTimeout(function(){ " + ClientScript.GetPostBackClientHyperlink(butRefresh, "refresh") + " },5000);</script>");

答案 8 :(得分:2)

你做不到。如果您使用重定向(或任何其他服务器技术),您将永远不会将实际页面发送到浏览器,只会发送重定向页面。

您必须使用元标记或JavaScript来执行此操作,以便您可以在页面显示一段时间后重新加载页面:

ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);

答案 9 :(得分:2)

page_load中,添加以下内容:

Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;

答案 10 :(得分:1)

Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");

答案 11 :(得分:1)

您可以使用2种方法来解决此问题: 1)头标记后

<head> 
<meta http-equiv="refresh" content="600">
</head>

2)如果您的网页没有标记标记,则必须使用Javascript来实现

<script type="text/javascript">
  function RefreshPage()
  {
    window.location.reload()
  }
</script>

我的联系人:

http://gola.vn

答案 12 :(得分:1)

我可以进行页面刷新的唯一正确方法是通过JavaScript,许多顶级.NET答案都失败了。

Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");

将上述代码放在按钮点击事件或任何您想强制刷新页面的位置。

答案 13 :(得分:0)

对于asp.net核心3.1

Response.Headers.Add("Refresh", "2");// in secound

Response.Headers.Remove("Refresh");