【birdshome】使用ASP.NET 2.0提供的WebResource管理資源
ASP.NET(1.0/1.1)給我們提供了一個開發WebControl的程式設計模型,於是我們擺脫了asp裡面的include模式的複用方式。不過1.0/1.1提供的Web控制元件開發模型對於處理沒有image、css等外部資源的元件還算比較得心應手,script雖然很多時候也是外部資源,但在開發控制元件的時候我們習慣把script使用Page.Register...Script()來嵌入模組,因為緊湊的東西更便於我們複用,用一個dll就可以解決問題又何必要節外生枝呢。
ASP.NET 2.0提供的Web Resources管理模型,很好的解決了image、css、script等外部資源的管理問題。現在只需要在solution explorer把資原始檔的build action屬性設為Embedded Resource。然後在assemblyinfo.cs裡新增一句:
我們可以看msdn裡有WebResource的引數說明:第一個是資源的名字,第二個是資源的mime-type名。
其實這個語句放任何cs檔案裡,保證放在最高階namespace外就行。
然後在程式中呼叫如下:
GetWebResourceUrl的第一個引數是使用者定義的型別(這個是用來確定assembly用的),第二個引數是資源名。
上面的語句返回給browser的程式碼是:
其中的src就是GetWebesourceUrl執行後返回的,它有3個引數(這裡的&被解析成了&,不過IIS也認的),第一個引數a是就是通過typeof(WebCustom)來確定的assembly的名字,第二個引數r很明顯就是資源的名字了,第三個引數t是一個a所指的assembly的timestamp。這個t是為了讓資源的引用能享用browser快取的優化,因為IE對相同的url有自己的cache機制。又因為這個r同時又是使用者assembly檔案的timestamp,如果使用者更新了程式碼,重新編譯後t也會變化,這樣也就保證了browser能獲得最新的資源更新。如果我們能確定嵌入資源是確實不用再更新的,我們可以在typeof()裡寫一個bcl裡的型別,比如typeof(string),那麼他將只在freamwork升級後才會變動這個t。
當然這個WebResource.axd是不存在的,它只是IIS中的一個ISAPI影射。
使用示例程式碼如下:
ASP.NET 2.0提供的Web Resources管理模型,很好的解決了image、css、script等外部資源的管理問題。現在只需要在solution explorer把資原始檔的build action屬性設為Embedded Resource。然後在assemblyinfo.cs裡新增一句:
[assembly: WebResource("WebCtrl.cutecat.jpg", "image/jpg")]
其實這個語句放任何cs檔案裡,保證放在最高階namespace外就行。
然後在程式中呼叫如下:
m_Image.ImageUrl = this.Page.GetWebResourceUrl(typeof(WebCustom), "WebCtrl.cutecat.jpg");
上面的語句返回給browser的程式碼是:
<img src="WebResource.axd?a=pWebCtrl&r=WebCtrl.cutecat.jpg&t=632390947985312500" style="border-width:0px;" />
當然這個WebResource.axd是不存在的,它只是IIS中的一個ISAPI影射。
使用示例程式碼如下:
WebResource Demo#region WebResource Demo
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
[assembly: WebResource("WebCtrl.cutecat.jpg", "image/jpg")]
namespace WebCtrl
{
[DefaultProperty("Text")]
[ToolboxData("{0}:WebCustom>")]
public class WebCustom : WebControl
{
private string text;
private Image m_Image;
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
public string Text
{
get { return text; }
set { text = value; }
}
protected override void CreateChildControls()
{
m_Image = new Image();
this.Controls.Add(m_Image);
}
protected override void Render(HtmlTextWriter output)
{
m_Image.ImageUrl = this.Page.GetWebResourceUrl(typeof(WebCustom), "WebCtrl.cutecat.jpg");
this.RenderChildren(output);
}
}
}
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
[assembly: WebResource("WebCtrl.cutecat.jpg", "image/jpg")]
namespace WebCtrl
{
[DefaultProperty("Text")]
[ToolboxData("{0}:WebCustom>")]
public class WebCustom : WebControl
{
private string text;
private Image m_Image;
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
public string Text
{
get { return text; }
set { text = value; }
}
protected override void CreateChildControls()
{
m_Image = new Image();
this.Controls.Add(m_Image);
}
protected override void Render(HtmlTextWriter output)
{
m_Image.ImageUrl = this.Page.GetWebResourceUrl(typeof(WebCustom), "WebCtrl.cutecat.jpg");
this.RenderChildren(output);
}
}
}
#endregion
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-366447/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASP.NET 2.0中XSLT的使用ASP.NET
- ASP.NET 2.0 中的資料訪問ASP.NET
- 【birdshome 】ASP.NET控制元件開發之"程式碼緊湊原則"ASP.NET控制元件
- ASP.NET 2.0角色及成員管理ASP.NET
- 資料庫資源管理的使用之一資料庫
- ASP.NET 2.0中XML資料的處理ASP.NETXML
- 【聖炎¢天樂】ASP.NET 2.0中的成員管理與角色管理ASP.NET
- PM:為專案提供必要的資源
- web 報表如何使用以服務方式提供的資料來源?Web
- 【資源管理器】資源使用者組、資源計劃、資源計劃指令
- RxJava2.0 及Retrofit2.0學習資源RxJava
- asp.net 2.0揭祕:使用Rich控制元件ASP.NET控制元件
- 資源管理
- 表格儲存TableStore2.0重磅釋出,提供更強大資料管理能力大資料
- 使用 Web 標準生成 ASP.NET 2.0 Web 站點WebASP.NET
- ASP.NET 2.0 加密 CookiesASP.NET加密Cookie
- ASP.NET 2.0快取ASP.NET快取
- Asp.Net 學習資源列表ASP.NET
- 揭祕ASP.NET 2.0的Eval方法ASP.NET
- 使用 Elastic GPU 管理 Kubernetes GPU 資源ASTGPU
- 使用C++11實現完美資源管理C++
- Webpack資源管理Web
- asp.net 使用者角色管理ASP.NET
- Asp.net2.0提供程式模型--單使用者登入元件ASP.NET模型元件
- Vapor 2.0 - MySQL提供程式(MySQL Provider)VaporMySqlIDE
- ASP.NET 2.0(C#)- Profile(儲存使用者配置)ASP.NETC#
- IBMSST提供瞭解決資源問題的捷徑IBM
- asp.net 2.0 許可權樹的控制ASP.NET
- 使用資源管理器優化Oracle效能AQ優化Oracle
- Resource Manager資源管理之使用組切換分析
- 如何使用Windows 7資源管理器的預覽窗格Windows
- 專案資源管理
- ASP.NET 2.0中使用樣式、主題和皮膚ASP.NET
- ASP.NET 2.0當中的Call back技術與ASP.NET AJAXASP.NET
- 使用Asp.net 2.0內建的健康狀態監聽器(health monitoring)ASP.NET
- linux下puppet的“資源”管理Linux
- 人力資源的專案管理(轉)專案管理
- 在Asp.NET Core中如何優雅的管理使用者機密資料ASP.NET