共用方式為


使用 ASP.NET 的用戶端

.NET 最重要的功能之一就是可以在 ASP.NET 和獨立用戶端應用程式中執行相同的程式碼。當然,還是有一些不同。一般而言,ASP.NET 網頁會產生 HTML 程式碼來回應 HTTP 要求,然後以動態方式編譯網頁,這一點和前面範例不同。每一個 ASP.NET 網頁都會個別進行剖析和檢查語法。最後會產生已編譯和叫用 (Invoke) 的 .NET Runtime 類別。ASP.NET 會快取編譯完的物件,使得後續的要求不需要再經過編譯步驟,執行起來會快很多。

大多數現有的 ASP 網頁都使用 Microsoft JScript 或 Microsoft Visual Basic Scripting Edition (VBScript)。.NET Framework 提供了和 .NET 相容的 JScript 版本,因此 VBScript 程式碼可順利升級為 Visual Basic。下列程式碼將說明使用 Visual C# 的網頁,但是使用 Visual Basic 或 JScript 也可以輕鬆地撰寫出相同的網頁:

清單 11:ASP.NET 中的用戶端 (ClientASP.aspx)

<%@ Page Language="C#" Description="ASP.NET Component Test" %>
<%@ Import Namespace="CompCS"%>
<%@ Import Namespace="CompVC"%>
<%@ Import Namespace="CompVB"%>

<html>
<script language="C#" runat=server>
void Page_Load(Object sender, EventArgs EvArgs) {
   String Out = "";
   Int32 Count = 0;

   // Iterate through the component's strings, and concatenate them.
   Out = Out + "Strings from C# StringComponent<br>";
   CompCS.StringComponent myCSStringComp = new 
   CompCS.StringComponent();
   for (int index = 0; index < myCSStringComp.Count; index++) {
     Out = Out + myCSStringComp.GetString(index) + "<br>";
   }
   Out = Out + "<br>";

   // Iterate throught component's strings, and concatenate them.
   Out = Out + "Strings from Visual C++ StringComponent<br>";
   CompVC.StringComponent myVCStringComp = new 
   CompVC.StringComponent();
   for (int index = 0; index < myVCStringComp.Count; index++) {
      Out = Out + myVCStringComp.GetString(index) + "<br>";
   }
   Out = Out + "<br>";

   // Iterate over component's strings and concatenate.
   Out = Out + "Strings from Visual Basic StringComponent<br>";
   CompVB.StringComponent myVBStringComp = new 
   CompVB.StringComponent();
   for (int index = 0; index < myVBStringComp.Count; index++) {
      Out = Out + myVBStringComp.GetString(index) + "<br>";
   }

   Message.InnerHtml = Out;
}
</script>
<body>
   <span id="Message" runat=server/>
</body>
</html>

基本上,這個程式碼和獨立用戶端應用範例中的程式碼相同,只不過它會建立字串 (命名為 out),並將字串指定給 HTML 伺服器控制項的屬性。

**注意   **這個程式碼也可能使用您所熟悉的 **Response.Write,**將字串直接撰寫到 HTML 輸出資料流中。

網頁指定 Visual C# 做為語言,但是使用 Visual Basic 或甚至是 JScript 來撰寫一樣很容易:

<%@ Page Language="C#" Description="ASP.NET Component Test"

將程式庫匯入 ASP.NET 的方式也有些不同:

<%@ Import Namespace="CompVB"%>
<%@ Import Namespace="CompCS"%>
<%@ Import Namespace="CompVC"%>

前面幾行使用了 <%...%> 指定指令碼,並指定要匯入的命名空間。前面曾提到,組件必須位於應用程式起點的 \Bin 子目錄中。

這個網頁還有另外一個細微的差異,就是下面這一行:

<script language="C#" runat="server">

這一行會指示伺服器要在伺服器上執行程式碼,而非將程式碼文字當成 HTML 資料流的一部份送回用戶端。

Web Form 提供了下列六個方法的特殊辨識:

  • Page_Init
  • Page_Load
  • Page_DataBind
  • Page_PreRender
  • Page_Dispose
  • Page_Error

如果是標準的網頁事件,這些方法會自動連接到事件處理常式。最常使用的事件處理常式是 Load 的處理常式,它包含範例程式中的大部份程式碼:

void Page_Load(Object sender, EventArgs EvArgs) {...}

其餘的程式碼都很簡單。它只是將字串串連成較長的字串,命名為 out,然後用下面這個陳述式將 out 加入 HTML 程式碼中:

Message.innerHTML = Out

測試這個網頁需要幾個步驟。第一步,測試電腦必須安裝下列軟體:

  • Internet Information Services (IIS)。
  • Common Language Runtime。
  • ClientASP.aspx。
  • CompVC.dll、CompCS.dll 和 CompVB.dll 編譯元件。

將 .NET Framework SDK 安裝在已經安裝了 IIS 的電腦上,電腦就可以執行 ASP.NET (如果先安裝 SDK 才安裝 IIS,必須重新安裝 SDK)。

第二步,您必須設定指向 ClientASP.aspx 所在目錄的虛擬目錄 (使用 Internet 服務管理員)。若要使用 IIS 嵌入式管理單元來建立虛擬目錄,請執行下列步驟:

  1. 選取要加入目錄的網站或 FTP 站台。
  2. 按一下 [動作] 按鈕、指向 [新增],然後選取 [虛擬目錄]。
  3. 使用 [新的虛擬目錄] **** 精靈來完成工作。

如果您使用的是 NTFS 檔案系統,在 Windows 檔案總管中按兩下目錄、按一下 [共用],再按一下 [Web 共用] 索引標籤,也可以建立虛擬目錄。如需詳細資訊,請在安裝 IIS 的電腦上,參閱位於 https://localhost/iisHelp/ 的 IIS 文件中的〈建立虛擬目錄〉主題。

或者,請執行位於 CompTest 目錄中的 CreateVRoot.vbs VBScript 檔案,也可以建立虛擬目錄。

第三步,編譯完的元件 DLL 應該位於應用程式虛擬目錄起點之下的 \Bin 目錄中。

假設每個項目都已正確設定,將這個檔案與 https://localhost/NetSDK/PlatformIntroduction/ClientASP.aspx URL 一起執行,便會產生 Internet Explorer 的執行個體,顯示結果與以下類似:

請參閱

開發教學課程摘要 | 附錄 A:瀏覽命名空間的工具