根據線上監測項目需要,要求實現在IE中運行SmartClient程式,而且需要能夠和用戶端的JavaScript進行互動。
在.NET SDK的文檔中有相關內容描述如下:
- IE 內的Windows表單控制項無需使用者提示即可啟用,它不要求註冊,而且遵守公用語言運行庫 (CLR) 程式碼存取安全性法則;
- 在 IE 中幾乎可以承載任何Windows表單控制項,該控制項必須被安裝到全域組件快取(GAC)或者與使用它的Web頁面位於相同的虛擬目錄中;
- IIS虛擬目錄的執行許可權必須為純指令碼,否則將無法啟用要使用的控制項。
在 IE 中運行Windows表單控制項,需要如下步驟:
- 建立Windows表單控制項:
建立Windows 控制項陳列庫項目,和普通的控制項陳列庫一樣。
- 建立引用該Windows表單控制項Html文檔:
在Html文檔中加入object標記,該標記引用Windows表單控制項例如:
<object id="smartClient1" classid="http:ClientLib/SmartClientLib.dll#SmartClientLib.UserControl1"
width="300" height="300">
<param name="Text" value="Simple Control">
</object>
最重要的就是classid,包括指向控制項陳列庫的相對路徑和控制項的完全限定名,與ActiveX的object標記不同的是Windows表單控制項不需要guid,在Windows表單控制項中,路徑和完全限定類名將作為唯一的標識;也可以param標記,設定控制項上的屬性,name表示屬性的名稱,value表示屬性的值;也可以通過JavaScript指令碼訪問控制項的公開的屬性、方法。
- 建立虛擬目錄並設定許可權:
如上所述,設定網頁所在虛擬目錄的許可權,並部署Windows表單控制項。
- 運行該控制項:
啟動 IE 瀏覽網頁,Windows表單只能夠在 IE 瀏覽器中運行,不能夠在其它的瀏覽器中運行。
注意:如果用VS2005編譯,出現表單控制項不能夠正常顯示,或者不能和用戶端JavaScript指令碼進行互動訪問,將所有的Windows表單控制項代碼複製到一個檔案中,用.NET附帶的命令列工具csc/vbc進行編譯,則可以正常顯示,不知是怎麼回事。