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
1 | Page page = (Page)HttpContext.Current.Handler; |
2 | string[] rsname = new string[] { "TestPages.css", "SyntaxHighlighter.css" }; |
3 | for (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 | } |
全站熱搜
留言列表