[转]Curstom WebControl:将静态文件编译进dll (WebResource)

摘自:虫虫的垃圾箱 http://hi.baidu.com/anuiz/blog/item/20614ac2eaba1434e4dd3b6f.html

做自定义服务器控件的时候常需要将静态文件编译进一个dll中。今天尝试了一下,做个记录,免得忘了。

1,资源文件的添加
首先在Curstom WebControl的工程里添加一个文件夹,名字任意,一般叫做 Resources。把所有想要编译的资源统统拖到这个文件夹里去。
将该文件夹里所有文件的 Build Action 属性修改为 Embedded Resource.
在 AssemblyInfo.cs 里,将所有的文件编译信息添加进去,写法如下:
    [assembly: WebResource("ResourceTest.Resources.Icon.bmp","image/bmp")]
     (别忘了在 AssemblyInfo.cs 文件头部 using System.Web.UI;)
ResourceTest.Resources.Icon.bmp 就是这个文件的路径,ResourceTest是这个工程的namespace,Resources是那个文件夹,Icon.bmp就是文件名。
image/bmp 是资源文件的MIME属性, js文件为 text/javascript ,html文件是 text/html ,gif为 image/gif 等等。
这时编译工程,资源就能被编译到dll里去了。

2,资源文件的使用
资源文件使用起来也是很方便的,一般通过以下方法获得资源文件的Url:
              string url = Page.ClientScript.GetWebResourceUrl(this.GetType(), "ResourceTest.Resources.Icon.bmp");
获得的url一般是这样:
/WebAppName/WebResource.axd?d=DuWo...SdnEciZx0&t=63....203
其实资源文件就是通过一个处理WebResource.axd的HttpHandler获取的。

顺便写一下服务器控件里注册js文件的代码:
         protected override void OnLoad(EventArgs e)
          {
              Type t = this.GetType();
              string url = Page.ClientScript.GetWebResourceUrl(t, SCRIPTFILE);
              if (!Page.ClientScript.IsClientScriptIncludeRegistered(SCRIPTFILE))
              {
                  Page.ClientScript.RegisterClientScriptInclude(SCRIPTFILE, url);
              }
          }

SCRIPTFILE 就是js文件的资源路径 是一个只读的字符串常量。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值