使用 ASP.NET 2.0 中的 Web 資源

文章翻譯 文章翻譯
文章編號: 910442 - 檢視此文章適用的產品。
ASP.NET 支援語音資料行

使用 ASP.NET 2.0 中的 Web 資源

若要自訂這個資料行,您的需求,我們想要邀請您送出問題,您要查看以及您有興趣的相關想法,解決在未來知識庫文件和 Support Voice 資料欄。您可以送出您的想法和意見反應使用 向詢問 表單。此外,還有在本篇文章下方表格的連結。
全部展開 | 全部摺疊

在此頁中

簡介

您好 !我的名字是 Praveen Yerneni,而且我是技術指導人員的工作使用 microsoft 的 ASP.NET 支援群組。在本月的專欄中,我將討論 Web 資源,以及如何實作它們在您應用程式。

如果您的開發人員以 COM 廣泛的運作方式控制項中,您也可以助本文中談到一部份的索引鍵在開發控制項時,您可能會面臨的問題。在 Microsoft 在過去,ASP.NET 1.1 中,如果您想要部署靜態檔案.html 檔案,例如.css檔案、 影像檔和指令碼檔,藉由使用 COM 控制項,您必須建立安裝程式 」 和 「 配搭都各自掌控搭配 COM 這些檔案。雖然這樣的工作,它呈現時部署控制項的許多問題。針對範例中,您可能已發生版本衝突,並確認其與問題檔案,例如影像部署至相同的位置,或以損毀或刪除的靜態檔案,而造成失敗的控制項。

網頁Microsoft ASP.NET 2.0 中的資源,以讓解決這些問題開發人員會將這些資源內嵌至組件當做.resources。若要存取這些靜態資源,您可以只是一種方法中呼叫控制項的程式碼。

Web 資源的運作方式

Web 資源依賴特殊的處理常式,名為WebResource.axd,設計用來擷取組件資源,並提供服務他們的網頁瀏覽器。WebResource.axd 的處理常式型別是AssemblyResourceLoader

當要求進入從用戶端WebResource.axd,在查詢字串物件的方法要求的 Web 資源識別項會尋找處理常式。根據 Web 資源識別項的值處理常式接著會嘗試載入組件包含此資源。如果這個作業成功,然後將尋找處理常式組件屬性並從組件載入資源資料流。最後,會抓取這個處理常式,來自資源的資料傳送的資料流,並將它傳送給用戶端一起在組件屬性中所指定的內容類型。

URLWebResource.axd 看起來會如下所示:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
這個 URL 的格式是 WebResource.axd?d=加密識別項& t =時間戳記值.["d"代表 「 要求的 Web 資源。"t"會的時間戳記要求的組件,它可協助在判斷過去曾經發生過任何該資源的變更。

探究程式碼

在 [我的範例中,我已經開發所耗用的 COM 控制項ASP.NET Web 應用程式來示範這項新功能。

Web 資源的 COM 控制項

建立和嵌入 Web 資源,我已經開發 COM控制項 (SimpleControl)。它有下列的內嵌的資源:
  • 兩個影像檔命名為 smallFail.gif,smallSuccess.gif。 映像會使用這些檔案在變換效果控制項,而且耗用的控制碼內。
  • 名為 Help.htm 的 HTML 檔案。這個檔案則否包含太多文字,而且僅用於示範。
  • 一個 JavaScript 檔案會命名為 MyScript.js。這個檔案包含一些 JavaScript 程式碼,也示範 「 取代 」 功能若要取得另一個在相同的內嵌資源的參考組件。
  • 一個.css 檔名為 MyStyleSheet.css。此樣式然後,工作表即佔去直接從 ASP.NET Web 應用程式。
在本文中我將探討所需的組件Web 資源。
嵌入網頁資源
首先,您必須確認所有的靜態檔案,新增至 Microsoft Visual Studio 2005年中的專案是 Web 控制項程式庫內嵌的資源。若要內嵌這些資源,您只需要的是新增Visual Studio 的這些檔案,然後讓修改這些檔案的內容建置動作是設定為 內嵌資源.

您完成後,您也必須做出確定如下所示,已被WebResource組件屬性在 AssemblyInfo.cs 檔案中參考這些資源。
[assembly: WebResource("SimpleControl.Help.htm", "text/html")]
[assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]

WebResource組件的屬性會有三個參數,如下所示:
  • Web 資源: 資源內嵌在組件中的名稱
  • ContentType: 資源的 MIME 檔案類型
  • PerformSubstitution: 布林值,判斷是否其他 Web 資源的 Url參考此資源在被剖析並取代成完整的路徑資源的
擷取網路資源
可用來取得網路資源,我曾經使用GetWebResourceUrl方法,也就是通常用來管理用戶端指令碼的ClientScriptManager類別的方法。這個方法會傳回的伺服器端資源的 URL 參考內嵌在組件。GetWebResourceUrl方法會接受下列兩個參數:
  • 型別: 伺服器端資源的類型
  • 資源名稱: 伺服器端資源的名稱
若要使用這個方法,首先您必須建立ClientScriptManager類別的執行個體,並取得類別的型別,如下所示。
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

當您有此類別的執行個體時,然後必須求助於此方法和傳遞適當的參數像下面,我在此建立超連結] 按鈕,以及設定的NavigateURL方法,以指向內嵌 HTML 資源。
HyperLink hlHelpFile = new HyperLink();
            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
            hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
            hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");
            
            this.Controls.Add(hlHelpFile);

            Image imgTest = new Image();
            imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
            imgTest.ID = "image1";
            hlHelpFile.Controls.Add(imgTest);

也在相同的程式碼列表的上方時,我已經建立影像] 按鈕,且ImageUrl屬性從另一個內嵌的.gif 影像取得它的值資源。
使用 [取代] 功能
使用 Web 資源的其他有用的功能是PerformSubstitution屬性的WebResource屬性的 「 內嵌 Web 資源 」 一節中所示上方。這項功能可讓您實際上窺內幕另一個內嵌的 [Web 資源資源。如果啟用了此屬性, WebResource處理常式會剖析內嵌的資源,並取代語法實際資源之前伺服WebResource組件屬性頁面。

在上面的程式碼,您會注意到超連結控制項具有名為ChangeImage的用戶端事件。這個ChangeImage函式位在指令碼檔。下列程式碼此指令碼。
function ChangeImage(imgControl,varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
    document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
   document.getElementById('Label1').style.color = varcolor;
}
這個指令碼檔名為 MyScript.js 也是為內嵌的資源在相同的 COM 控制項。此時請注意我使用WebResource方法以指向另一個指令碼中的內嵌資源檔案。

此外,以便確定這個 JavaScript 檔案已經登錄在頁面上,我使用ClientScriptManager類別的RegisterClientScriptInclude方法,如下所示。
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

使用 ASP.NET 中的控制項

一旦您已成功地建置 COM 控制項,您必須使用此控制項在用戶端 ASP.NET 專案中。若要執行這項操作,您只需將控制項加入至 ASP.NET 中的工具箱。然後將控制項加入至任何在設計工具中的 web 表單。

當您將控制項新增到工具箱] 中為您註冊控制項,並會加入下列程式碼,及查看HTML 語法。
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
在 [我的 COM 控制項,我也有內嵌的樣式表檔案,而我在 [我的 ASP.NET 應用程式使用。若要存取這個樣式表,您必須加入HtmlControl中的 HTML 網頁和集合此刻執行屬性,如所示的伺服器下面的連結。
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
之後,您可以程式設計方式設定這個控制項,以指向WebResource組件屬性的Page_Load事件裡,如下所示的Href屬性。
protected void Page_Load(object sender, EventArgs e)
    {
        //Get the name of the Web Resource.
        String rsname = "SimpleControl.MyStyleSheet.css";
        
        //Get the type of the class.
        Type rstype = typeof(SimpleControl.MSButton);

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;
        lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
     }

當您執行程式碼時,您會看到如下所示的控制項遵循:
摺疊此圖像展開此圖像
 小型的失敗
與滑鼠移過控制項看起來如下所示:
摺疊此圖像展開此圖像
 小型成功
當您按一下此連結時,它將您移至 [說明] 頁面中,其中內嵌於 COM 控制項組件檔。

結論

Web 資源已實用的新功能,在 ASP.NET 2.0。您可以使用善用你如果明智地使用這項功能。許多的快取技術被用來確定 Web 資源不會影響的效能應用程式。

在 ASP.NET 2.0 中,WebResource.axd 是由內部使用Microsoft.NET Framework 會擷取內嵌的資源。比方說,.NET Framework 會使用 WebResource.axd 來擷取 WebUIValidation.js 指令碼用於驗證控制項,以及擷取 Menu.js 指令碼檔案,如功能表控制的檔案。

參考

如需詳細資訊,請造訪下列 Microsoft 網站取得:
ClientScriptManager.GetWebResourceUrl 方法
http://msdn2.microsoft.com/en-us/library(d=robot) /system.web.ui.clientscriptmanager.getwebresourceurl.aspx

WebResourceAttribute 類別
http://msdn2.microsoft.com/en-us/library(d=robot) /system.web.ui.webresourceattribute.aspx

連結檔與內嵌資源
http://msdn2.microsoft.com/en-us/library/ht9h2dk8.aspx
同樣的請隨意送出您想要的想法主題解決在日後的專欄中,或是在眭舑使用 向詢問 表單。

屬性

文章編號: 910442 - 上次校閱: 2013年4月30日 - 版次: 3.0
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 2.0
關鍵字:?
kbhowto kbasp kbmt KB910442 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:910442
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com