文章編號: 306575 - 上次校閱: 2005年11月2日 - 版次: 3.3

如何在 ASP.NET 中動態包含檔案

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您,如何在 .aspx 網頁中動態地包含 HTML 和用戶端指令碼。

由於 ASP.NET 應用程式會先經過編譯和執行才送往用戶端,因此您不能使用變數來取代伺服器端 Include 檔案的檔名 (例如 <!-- #include PathType = FileName -->")。不過,您可以使用 ResponseStreamReader 物件,將 Include 檔案寫入到 HTTP 內容資料流中。

本文將告訴您,如何建立 .aspx 網頁來讀取具有靜態 HTML 及 (或) 用戶端指令碼的檔案,並將檔案內容寫入瀏覽器。

其他相關資訊

在 ASP.NET 中,Response 物件提供了名為 WriteFile 的新方法。您可以使用 WriteFile 方法,將指定的檔案直接寫入 HTTP 內容輸出資料流。

如果只想把檔案內容寫入瀏覽器中,您只需要一個陳述式就可以完成。如果想在檔案傳送至瀏覽器之前加以操作,請參閱<參考>一節,以取得有關 .NET 中基本檔案輸出/輸入作業的資訊。

在 ASP.NET 中,您可以在程式碼後置模組中撰寫內嵌程式碼或撰寫程式碼。本文所呈現的內嵌程式碼範例會開啟檔案,並將檔案內容寫入瀏覽器中。

建立範例的步驟

  1. 開啟 Microsoft Visual Studio .NET。
  2. [檔案] 功能表上,指向 [新增],再按一下 [專案]
  3. [新增專案] 對話方塊中,按一下 [專案類型] 下的 [Visual Basic 專案]。按一下 [範本] 下的 [ASP.NET Web 應用程式]
  4. 將依預設建立的 .aspx 網頁切換到 HTML 程式碼編輯器。將現有程式碼替換為下列程式碼:
       <%@ Page Language="vb" AutoEventWireup="false"%>
       <html>
       <body>
            <%		   
              Response.WriteFile ("Yourfile.inc")
            %>
       </body>
       </html>
    					
  5. Response.WriteFile 陳述式中的 "Yourfile.inc" 取代為 include 檔案的名稱,其中含有一些 HTML 或用戶端指令碼。
  6. 將 "Yourfile.inc" 新增至專案中。
  7. 瀏覽至 .aspx 檔案。請注意,您的檔案內容已寫入瀏覽器。

疑難排解

  • 動態包含檔案中的伺服器端程式碼會顯示在用戶端瀏覽器上。

    動態包含的檔案可能含有任何用戶端程式碼,包括 HTML 和 JavaScript。如果檔案中含有任何伺服器端程式碼,此程式碼就會送至用戶端瀏覽器成為純文字,並且如果您檢視瀏覽器中顯示的網頁來源,就會看到這些文字。請注意,ASP.NET 不會處理動態包含檔案中的伺服器端指令碼。因為在包含該檔案前,所有的 ASP.NET 程式碼都已執行;因此伺服器不會再回頭讀取任何內容來進行伺服器端處理。
  • 如果在程式碼後置模組中使用 Response.WriteResponse.WriteFile 陳述式,這些陳述式會將資訊寫入至任何 HTML 標記之前。如果您搭配使用內嵌 <SCRIPT> 標記與 RUNAT="Server" 屬性,也會發生相同情況。

    由於程式碼後置模組會先編譯,因此當 HTML 輸出送至瀏覽器時,Response.WriteResponse.WriteFile 或內嵌伺服器端 <SCRIPT> 標記所產生的所有輸出,都會顯現在任何 HTML 標記之前。而當您在傳統 ASP 樣式標記中使用 Response.Write 陳述式時,並不會發生這個問題。

?考

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
304427? (http://support.microsoft.com/kb/304427/ ) 如何:在 Visual Basic .NET 進行基本的檔案 I/O
304430? (http://support.microsoft.com/kb/304430/ ) HOW TO:在 Visual C# .NET 中進行基本的檔案 I/O

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
關鍵字:?
kbhowtomaster KB306575
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。