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

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

我宁愿不使用Response.Redirect(),因为我不知道页面是否处于打开状态,因为它位于SharePoint内部的用户控件内部。

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

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

第二个是Meta标签:

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

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

在我的用户控件中,在更新数据之后,我执行:

  Response.Redirect(Request.RawUrl); 

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

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

这可能会很晚,但我希望它能帮助正在寻找答案的人。

你可以使用下面这行来做到这一点:

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

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

  1. 用redirect标题发回页面
  2. 浏览器redirect到目标URL。

正如你所看到的,相同的结果需要2次旅行,而不是1次旅行。

尝试这个:

 Response.Redirect(Request.Url.AbsoluteUri); 

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

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

如果你不想做一个完整的页面刷新,那么如何在UpdatePanel中打包你想刷新的内容,然后做一个asynchronous的回发?

有很多方法来刷新页面在asp.net中像…

Java脚本

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

代码在后面

 Response.Redirect(Request.RawUrl) 

元标记

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

页面redirect

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

我个人需要确保页面保持状态,所以所有的文本框和其他input字段保持其值。 通过执行元刷新就像一个新的职位,IsPostBack总是假的,所以你的所有控件再次处于初始化状态。 保留状态把这个放在Page_Load()的末尾。 在页面上创build一个隐藏的button,如事件butRefresh_Click(…)。 这段代码在页面上设置一个计时器来触发回发,就像用户自己点击刷新button一样。 所有状态和会话保留。 请享用! (PS您可能需要将该指令放在@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>"); 

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

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

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

在你的page_load中添加这个:

 Response.CacheControl = "no-cache"; Response.AddHeader("Pragma", "no-cache"); Response.Expires = -1; 
 Response.Write("<script>window.opener.location.href = window.opener.location.href </script>"); 

你可以用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

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

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

将上面的代码放在button单击事件或任何你想强制页面刷新的地方。