在上一篇文章中,经过继承TextBox建立了一个简单的自定义控件。
这篇文章主要讲一下自定义控件中资源文件的封装。
在自定义控件中可能会用到图片、CSS样式表、JS文件等,能够把这些设为控件的属性,让用户来填充,这是一个不太好的办法。本文提供一种方法,将资源文件封装进控件中。
一、首先把须要用到的文件拷贝到控件项目下,若是你的项目下有不少控件,能够分别建立独立的文件夹,放置各自的资源文件。
二、设置文件的属性,如图:生成操做 选择:嵌入的资源
三、打开程序集信息文件,如图:
在文件的最后添加引用的资源文件信息,以图片logo.gif为例。
程序的命名空间为:VeryCodes.Controls.Web,存放图片的文件夹为:BlogTitle
- [assembly: WebResource("VeryCodes.Controls.Web.BlogTitle.logo.gif", "p_w_picpath/gif")]
若是你有多个文件,依次添加进来就能够了。
常见的格式有:p_w_picpath/gif、text/javascript、text/css等
若是使用png文件可能会有问题,浏览器可能解析不了。
四、在程序中使用:
能够这样获得:
- String ImgUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "VeryCodes.Controls.Web.BlogTitle.logo.gif");
五、CSS和Js文件的注册:
注册CSS
- string cssUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "VeryCodes.Controls.Web.BlogTitle.logo.css");
- HtmlLink cssLink = new HtmlLink();
- cssLink.Href = cssUrl;
- cssLink.Attributes.Add("rel", "stylesheet");
- cssLink.Attributes.Add("type", "text/css");
- Page.Header.Controls.Add(cssLink);
注册Js文件有两种方法:
- //1
- Page.ClientScript.RegisterClientScriptResource(this.GetType(), "VeryCodes.Controls.Web.BlogTitle.logo.js");
-
- //2
- string JsUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "VeryCodes.Controls.Web.BlogTitle.logo.Js");
- Page.Header.Controls.Add(new LiteralControl("<script type=\"text/javascript\" src=\""+ JsUrl +"\" ></script>"))
基本的使用方法到这里就讲完了。
还有一个小技巧:若是图片是在你的JS文件中使用,你就须要修改js,将资源图片做为参数传入。
Ok,本文到此结束!