首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 網頁重新整理/重導向的多種實作方式總彙整 (C#, JavaScript, HTML)

     編輯:ASP.NET 基礎

伺服器端 (C#) 方式

1. Response.Redirect - 標準重導向

// 重導向至目前頁面 (重新整理)
Response.Redirect(Request.Url.ToString());

// 重導向至指定頁面
Response.Redirect("~/Default.aspx");

特點:HTTP 302 回應、瀏覽器網址列更新、可跨網域、會終止目前要求管線 (後續程式碼不執行)。

2. Response.Write 註冊 JavaScript

// 方式 A: window.location.href
Response.Write("");

// 方式 B: window.location.reload()
Response.Write("");

// 方式 C: 帶提示訊息後導向
Response.Write("");

特點:不中斷伺服器端程式碼執行、可在 UpdatePanel 部分更新中使用、需注意腳本註冊時機。

3. Response.AddHeader - HTTP Refresh 標頭

// 立即重新整理
Response.AddHeader("Refresh", "0");

// 3 秒後導向指定頁面
Response.AddHeader("Refresh", "3;url=Target.aspx");

特點:HTTP 標頭層面控制、不依賴 JavaScript、SEO 友善度較低。

4. Server.Transfer / Server.Execute - 伺服器端轉交

// 轉交給另一頁面處理 (網址列不變)
Server.Transfer("Target.aspx");

// 執行另一頁面並回傳結果
Server.Execute("Target.aspx");

差異:Transfer 完全移交控制權;Execute 回來繼續執行。兩者皆不更新瀏覽器網址。

客戶端 (JavaScript/HTML) 方式

1. HTML Meta Refresh

<meta http-equiv="refresh" content="5;url=Target.aspx" />
<!-- 5 秒後導向 Target.aspx,content="0" 為立即重整 -->

2. JavaScript 定時重新整理

<script>
    // 10 秒重整一次
    setInterval(function() { window.location.reload(); }, 10000);
    
    // 或倒數計時顯示
    var count = 10;
    setInterval(function() {
        document.title = count + " 秒後重新整理";
        if (--count <= 0) window.location.reload();
    }, 1000);
</script>

3. 框架/iframe 互相重新整理

// 父頁面重新整理子框架
parent.frames["leftFrame"].location.reload();

// 子框架重新整理父頁面
parent.location.reload();

// 子框架重新整理同層另一框架
parent.frames["rightFrame"].location.href = "NewPage.aspx";

4. 彈出視窗關閉後重新整理開啟者

<script>
    // 子視窗關閉前
    window.opener.location.reload();
    window.close();
</script>

ASP.NET AJAX (UpdatePanel) 環境下的特殊處理

在 UpdatePanel 非同步回傳中,Response.Redirect 與 Response.Write 皆可能失效,需使用 ScriptManager:

// 正確方式
ScriptManager.RegisterStartupScript(this, GetType(), "reload", "window.location.reload();", true);

// 錯誤示範 (非同步回傳無效)
Response.Redirect(Request.Url.ToString());

常見情境最佳實務對照表

情境推薦方式關鍵點
表單送出成功,導向列表頁Response.Redirect("List.aspx")POST-Redirect-GET 模式,防重複送出
AJAX 回傳後重新整理頁面ScriptManager.RegisterStartupScript搭配 UpdatePanel 使用
儲存成功顯示提示再導向Response.Write + alert + location.href或用 SweetAlert2 等美化彈窗
定時自動重新整理儀表板Meta Refresh 或 JS setIntervalMeta 不需 JS 支援;JS 可控制更精細
跨框架頁面同步更新parent.frames[name].location.href同網域限制
伺服器端邏輯決定轉交頁面Server.Transfer網址不變、共享 Request/Session

避坑指南

  • Response.Redirect 後續程式碼仍會執行:建議加 Response.End() 或 return。
  • UpdatePanel 中不可用 Response.Redirect:會拋出 Sys.WebForms.PageRequestManagerParserErrorException。
  • JavaScript 重導向不會觸發伺服器端 Page_Load:純客戶端行為。
  • Meta Refresh 被部分瀏覽器攔截:重要流程勿依賴此方式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved