close

看ASP.NET的原始碼時,常會看到src=WebResource.axd?xxxxxxxxxx這樣的JS或圖片src,研究了一下,原來就是在寫成元件時,需要用到的文件比如js檔、css檔 或圖形,就可以使用這樣的方式內嵌至元件中,使用者不需另外複製這些檔案,這才恍然大悟。

之前寫的一些自訂控制項,總是要使用者自行複製js檔、css檔 或圖形到自己的目錄下,這幾天終於瞭解原來就是利用WebResource.axd來嵌入這些資料,迫不及待的練習寫了一個FreeTextBox延伸「插入程式碼」功能的元件,14個js檔、2個css檔、7個gif檔,使用者只要一個加入一個dll檔就搞定。真是相見恨晚,更有學不完的感覺,之前寫的元件,有空再找時間修正了。

網路上有一篇範例使用在 ASP . NET 2.0 Web 資源值得參考。

補充說明:
1.所有要作為WebResourc的文件,都必須在檔案上按「右鍵」\「屬性」,建置動作項目選「內嵌資源」
2.所有要作為WebResourc的文件,都必須在專案properties \ AssemblyInfo.cs中作定義
如:[assembly: WebResource("命名空間.子資料夾.資源檔名稱", ContentType)]
[assembly: WebResource("FreeTextBoxExtend.images.csharp.gif", "image/gif")]
3.加入text/css link的方式,一樣可以內嵌在元件中,不需像範例中,使用者需另寫Code

 

1Page page = (Page)HttpContext.Current.Handler;  
2string[] rsname = new string[] { "TestPages.css""SyntaxHighlighter.css" };  
3for (int i = 0; i < rsname.Length; i++)  
4{  
5  System.Web.UI.HtmlControls.HtmlLink myHtmlLink = new System.Web.UI.HtmlControls.HtmlLink();  
6  myHtmlLink.Href = cs.GetWebResourceUrl(this.GetType(), "FreeTextBoxExtend.Styles." + rsname[i]);//取得在AssemblyInfo中的Resource  
7  myHtmlLink.Attributes.Add("rel""stylesheet");  
8  myHtmlLink.Attributes.Add("type""text/css");  
9  page.Header.Controls.Add(myHtmlLink);  
10

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 11 的頭像
    11

    冠霖的部落格

    11 發表在 痞客邦 留言(0) 人氣()