現在。有許多開發人員已經在使用ASP.NET2.0的WebResource的功能了。 WebResource允許我們嵌入資源到程式集中。包括圖像,文字等。
在介紹WebResource就必須介紹一下WebResource.axd,我們來看看
script language="javascript" src="WebResource.axd?a=s&r=WebUIValidation.js&t=631944362841472848" type="text/javascript"></script >目前我發現webResource.axd的參數跟現在版本有屬不同。在早期文章介紹屬性:
a 程式集名稱
r 資源檔案名稱
t 程序集最後修改的時間
webResource.axd只是ISAPI中的一個映射。你也可以在使用IhttpHandler。 <add verb="GET" path="WebResource.axd" type="System.Web.Handlers.AssemblyResourceLoader" /> webResource.axd是透過AssemblyResourceLoader類別來自訂處理HTTP請求,根據所傳遞的程式來識別從哪個程式集中獲取哪個資源。
下面以微調控制項為範例。
使用步驟:
新增要嵌入的資源(例如圖像)到項目中在資源管理器中,按一下文件,在property window(屬性視窗)中build action選擇embedded resource(嵌入資源)。
加入下列文件到你的assessbly.cs檔案哪中
[assembly: WebResource("Obies.Web.UI.WebControls.NumericTextBox.js", "application/x-javascript")]
[assembly: WebResource("Obies.Web.UI.WebControls.NumericTextBox_Silver_BtnUp.gif", "image/gif")]請注意WebResourceAttribute格式:
[assembly: WebResourceAttribute("MyNameSpaces.Resources.MyImage.gif", "image/gif")]
在CONTROL原始碼當中。你需要使用下面程式碼來獲取圖像
// get WebResource URLs for the embedded gif images
String BtnUpImgSrc = this.Page.ClientScript.GetWebResourceUrl(typeof(NumericTextBox),
"Obies.Web.UI.WebControls.NumericTextBox_" + this.ImageSet.ToString() + "_BtnUp.gif");GetWebResourceUrl method:Gets a URL reference to a server-side resource.(取得伺服器端資源的URL 參考)
我發現在早期版本當中。它的使用方法是:this.page.GetWebResourceUrl
上面程式碼是從指定的程式集中當中取得影像名稱:Obies.Web.UI.WebControls.NumericTextBox_" + this.ImageSet.ToString() + "_BtnUp.gif,它傳回的是一個伺服器端資源的URL引用位址。類似:
WebResource.axd?d=gWYJBlnQKynoTePlJ34jxyoSpR2Rh9lpYd8ZrSl0&t=632812333820000000
另外,MS提供一個Header類別。 Header類別主要是對HTML頁面中的<Head runat="server"></head>的操作。包括Title等呵呵。以後要修改一個頁面的標題很簡單了。
this.Header.Title = "This is the new page title.";
加入CSS樣式(style attribute) Style style = new Style();
style.ForeColor = System.Drawing.Color.Navy;
style.BackColor = System.Drawing.Color.LightGray;
// Add the style to the header for the body of the page
this.Header.StyleSheet.CreateStyleRule(style, null, "body");
protected override void OnPreRender (EventArgs e) {
// get a WebResource URL for the core JS script and register it
this.Page.ClientScript.RegisterClientScriptResource(typeof(NumericTextBox),
"Obies.Web.UI.WebControls.NumericTextBox.js");
// get a WebResource URL for the embedded CSS
String css = this.Page.ClientScript.GetWebResourceUrl (typeof(NumericTextBox),
"Obies.Web.UI.WebControls.NumericTextBox_" + this.ImageSet + ".css");
// register the CSS
// this.Page.StyleSheetTheme = css;
//this.Page.Header.LinkedStyleSheets.Add (css);
//早期版本的方法?只能用下面的程式碼來解決了
HtmlLink link = new HtmlLink();
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("href", css);
this.Page.Header.Controls.Add(link);
}
以下是微調控制的截圖
使用方法:
<%@ register tagprefix="cc" namespace="Obies.Web.UI.WebControls" assembly="Obies.Web.UI.WebControls" %>
<cc:NumericTextBox width="50" ImageSet="Silver" length=" 2" runat="server" id="NumericTextBox1"
maxvalue="10" minvalue="0"></cc:NumericTextBox>
<cc:NumericTextBox width="50" ImageSet="Green" length="2" runat="server" id="NumericTextBox2"
maxvalue="10" minvalue="0"></cc:NumericTextBox>
來源位址:http: //msdn.microsoft.com/library/default.asp? url=/library/en-us/
dnvs05/html/webresource.asp
由於原來的程式碼有點問題,許多特性都是最新的VS2005不支援。所以進行了修改。
原始碼下載: