2009-07-30 32 views
139

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

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

+4

为什么不使用JavaScript? – 2009-07-30 13:14:06

+2

我不是OP,但其中一个原因可能是因为javascript可能被禁用 – 2009-07-30 13:21:21

+11

ASP.NET依赖于javascript,所以如果用户禁用javascript,则会出现更大的问题... – jrummell 2009-07-30 13:25:39

回答

41

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

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

二是meta标签:

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

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

32

试试这个:

Response.Redirect(Request.Url.AbsoluteUri); 
+1

它只会发送重定向页面而不是页面,导致一个循环,当浏览器看到它永远不会得到一个真实的页面时,浏览器将停止循环... – Guffa 2009-07-30 13:24:55

+0

@Guffa依赖于使用重定向的上下文。如果它被用在基于动作或条件特别调用的动作/代码块中,那么每次迭代只会触发一次,并且如果编码正确地隔离。 – 2015-11-27 16:10:39

6

如果你不想做一个完整的页面刷新,然后怎么样包装要刷新的UpdatePanel的内部,然后做一个异步回送什么?

2

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

你必须要么使用元标记或JavaScript要做到这一点,这样就可以重新载入页面已经显示了一段时间后:

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

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

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

在我的用户控件,数据更新后,我做的:

Response.Redirect(Request.RawUrl);  

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

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

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

在你page_load,补充一点:

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

您可以使用2种方式为解决这个问题: 1)head标签

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

2后)如果您的网页没有标签标签您必须使用Javascript才能实施

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

我的联系方式:

http://gola.vn

34

这可能是晚了,但我希望它可以帮助别人谁是寻找答案。

您可以使用下面的行做到这一点:

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

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

  1. 发回的页面重定向头
  2. 将浏览器重定向到目标网址。

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

3

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

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

有各种不同的方法刷新页面像asp.net ...

Java脚本

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

代码隐藏

Response.Redirect(Request.RawUrl) 

Meta标签

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

页面重定向

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

,我可以做页面刷新的唯一正确途径是通过JavaScript,许多顶级.NET答案的失败对我来说。

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

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

相关问题