如何在ASP.NET中刷新页面? (让它通过代码重新加载)如何刷新ASP.NET中的页面? (让它通过代码重新加载)
我宁愿不使用Response.Redirect(),因为我不知道页面是否处于打开状态,因为它位于SharePoint内部的SharePoint控件中的用户控件内。
如何在ASP.NET中刷新页面? (让它通过代码重新加载)如何刷新ASP.NET中的页面? (让它通过代码重新加载)
我宁愿不使用Response.Redirect(),因为我不知道页面是否处于打开状态,因为它位于SharePoint内部的SharePoint控件中的用户控件内。
将页面呈现给客户端后,只有两种强制刷新的方法。 一种是使用Javascript
setTimeout("location.reload(true);", timeout);
二是meta标签:
<meta http-equiv="refresh" content="600">
您可以设置刷新的时间间隔在服务器端。
试试这个:
Response.Redirect(Request.Url.AbsoluteUri);
它只会发送重定向页面而不是页面,导致一个循环,当浏览器看到它永远不会得到一个真实的页面时,浏览器将停止循环... – Guffa 2009-07-30 13:24:55
@Guffa依赖于使用重定向的上下文。如果它被用在基于动作或条件特别调用的动作/代码块中,那么每次迭代只会触发一次,并且如果编码正确地隔离。 – 2015-11-27 16:10:39
如果你不想做一个完整的页面刷新,然后怎么样包装要刷新的UpdatePanel的内部,然后做一个异步回送什么?
你不能那样做。如果您使用重定向(或任何其他服务器技术),则永远不会将实际页面发送到浏览器,而只发送重定向页面。
你必须要么使用元标记或JavaScript要做到这一点,这样就可以重新载入页面已经显示了一段时间后:
ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
使用JavaScript的location.reload()方法。
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
在我的用户控件,数据更新后,我做的:
Response.Redirect(Request.RawUrl);
这就确保了重新加载页面,并能正常工作从用户控制。您使用RawURL而不是Request.Url.AbsoluteUri
来保存可能包含在请求中的任何GET参数。
您可能不想使用:__doPostBack
,因为许多aspx页面在执行回发时的行为不同。
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");
在你page_load
,补充一点:
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
您可以使用2种方式为解决这个问题: 1)head标签
<head>
<meta http-equiv="refresh" content="600">
</head>
2后)如果您的网页没有标签标签您必须使用Javascript才能实施
<script type="text/javascript">
function RefreshPage()
{
window.location.reload()
}
</script>
我的联系方式:
这可能是晚了,但我希望它可以帮助别人谁是寻找答案。
您可以使用下面的行做到这一点:
Server.TransferRequest(Request.Url.AbsolutePath, false);
尽量避免使用Response.Redirect
,因为它增加了过程的步骤。它实际上做的是:
正如你所看到的,同样的结果需要2次旅行,而不是1次旅行。
我个人需要确保页面保持状态,所以所有的文本框和其他输入字段保留其值。通过执行元刷新就像一个新的职位,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>");
有各种不同的方法刷新页面像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
,我可以做页面刷新的唯一正确途径是通过JavaScript,许多顶级.NET答案的失败对我来说。
Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");
将上面的代码放在按钮单击事件或任何你想强制页面刷新的地方。
为什么不使用JavaScript? – 2009-07-30 13:14:06
我不是OP,但其中一个原因可能是因为javascript可能被禁用 – 2009-07-30 13:21:21
ASP.NET依赖于javascript,所以如果用户禁用javascript,则会出现更大的问题... – jrummell 2009-07-30 13:25:39