如何在ASP.NET中刷新页面? (让它通过代码重新加载)
我宁愿不使用Response.Redirect(),因为我不知道我将在哪个页面,因为它位于sharepart内部的sharepart内的用户控件内。
答案 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
,因为它会增加流程中的步骤。它实际上做的是:
正如你所看到的,同样的结果需要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>
我的联系人:
答案 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");