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

我宁愿不使用Response.Redirect(),因为我不知道我将在哪个页面,因为它位于sharepart内部的sharepart内的用户控件内。

有帮助吗?

解决方案

将页面呈现给客户端后,您只有两种强制刷新的方法。 一个是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 ,因为它会增加流程中的步骤。它实际上做的是:

  1. 使用重定向标头
  2. 发回页面
  3. 浏览器会重定向到目标网址。
  4. 正如你所看到的,同样的结果需要2次而不是1次旅行。

试试这个:

Response.Redirect(Request.Url.AbsoluteUri);

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

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

在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

如果您不想进行整页刷新,那么如何在UpdatePanel中包装要刷新的内容然后进行异步回发呢?

我个人需要确保页面保持状态,因此所有文本框和其他输入字段都保留其值。通过执行元刷新它就像一个新帖子,IsPostBack始终为false,因此所有控件都再次处于初始化状态。要保留状态,请将其放在Page_Load()的末尾。在页面上创建一个隐藏按钮,其中包含一个事件,例如butRefresh with event butRefresh_Click(...)。此代码在页面上设置一个计时器来触发回发,就像用户单击刷新按钮一样。保留所有州和会议。请享用! (例如,如果在回发时收到错误,您可能需要将指令放在@Page标题EnableEventValidation =&quot; false&quot;

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

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

您必须使用元标记或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>");

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top