如何刷新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程中的步骤。 它实际上做的是:
- 用redirect标题发回页面
- 浏览器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>
我的联系人:
我可以做页面刷新的唯一正确的方法是通过JavaScript,许多顶级.NET答案失败了。
Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");
将上面的代码放在button单击事件或任何你想强制页面刷新的地方。