使用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里添加一句:
None.gif[assembly: WebResource("WebCtrl.cutecat.jpg", "image/jpg")] None.gif
    我们可以看msdn里有WebResource的参数说明:第一个是资源的名字,第二个是资源的 mime-type名。
    其实这个语句放任何cs文件里,保证放在最高级namespace外就行。

    然后在程序中调用如下:
None.gifm_Image.ImageUrl =  this.Page.GetWebResourceUrl( typeof(WebCustom), "WebCtrl.cutecat.jpg"); None.gif
    GetWebResourceUrl的第一个参数是用户定义的类型(这个是用来确定assembly用的),第二个参数是资源名。

    上面的语句返回给browser的代码是:
None.gif < img  src ="WebResource.axd?a=pWebCtrl&amp;r=WebCtrl.cutecat.jpg&amp;t=632390947985312500"  style ="border-width:0px;"   />
    其中的src就是GetWebesourceUrl执行后返回的,它有3个参数(这里的&被解析成了&amp;,不过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影射。

    使用示例代码如下:
ExpandedBlockStart.gif #region WebResource Demo
InBlock.gif
InBlock.gif using System;
InBlock.gif using System.Collections.Generic;
InBlock.gif using System.ComponentModel;
InBlock.gif using System.Text;
InBlock.gif using System.Web.UI;
InBlock.gif using System.Web.UI.WebControls;
InBlock.gif
InBlock.gif[assembly: WebResource("WebCtrl.cutecat.jpg", "image/jpg")]
InBlock.gif
InBlock.gif namespace WebCtrl
ExpandedSubBlockStart.gif{
InBlock.gif    [DefaultProperty("Text")]
InBlock.gif    [ToolboxData("<{0}:WebCustom runat=server></{0}:WebCustom>")]
InBlock.gif     public  class WebCustom : WebControl
ExpandedSubBlockStart.gif    {
InBlock.gif         private  string text;
InBlock.gif         private Image m_Image;
InBlock.gif
InBlock.gif        [Bindable( true)]
InBlock.gif        [Category("Appearance")]
InBlock.gif        [DefaultValue("")]
InBlock.gif         public  string Text
ExpandedSubBlockStart.gif        {
ExpandedSubBlockStart.gif             get {  return text; }
ExpandedSubBlockStart.gif             set { text = value; }
ExpandedSubBlockEnd.gif        }
InBlock.gif
InBlock.gif         protected  override  void CreateChildControls()
ExpandedSubBlockStart.gif        {
InBlock.gif            m_Image =  new Image();
InBlock.gif             this.Controls.Add(m_Image);
ExpandedSubBlockEnd.gif        }
InBlock.gif
InBlock.gif         protected  override  void Render(HtmlTextWriter output)
ExpandedSubBlockStart.gif        {
InBlock.gif            m_Image.ImageUrl =  this.Page.GetWebResourceUrl( typeof(WebCustom), "WebCtrl.cutecat.jpg");
InBlock.gif             this.RenderChildren(output);
ExpandedSubBlockEnd.gif        }
ExpandedSubBlockEnd.gif    }
ExpandedSubBlockEnd.gif}
ExpandedBlockEnd.gif #endregion

本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
1月前
|
开发框架 搜索推荐 .NET
ASP.NET体检中心源码,实现检前、检中、检后全流程管理
健康体检系统遵循整个健康体检的实际流程,以提高工作效率、降低错检、防止漏检提高人性化服务水平为目的,在体检过程中可以高效、自动化、人性化的处理数据与提供服务。针对体检流程中工作强度在时间分配上不均匀等特点,解决了体检信息处理效率问题,在不增加体检中心人力资源投入或少投入的基础上,提升信息处理的效率,从而突破体检中心日处理体检人数的上限,为体检中心创造更大经济效益的同时,还能有效的降低体检工作者的劳动强度。
36 5
|
4月前
|
存储 开发框架 .NET
【ASP.NET】医学实验室管理(LIS)系统源码
【ASP.NET】医学实验室管理(LIS)系统源码
73 0
|
6月前
|
开发框架 监控 .NET
ASP.NET Dotnet LIMS实验室综合管理和质量监控系统源码
系统功能包括检测管理(合同管理、样品管理、样品收发管理、工作任务分配、检测结果登记、复核及审核、留样管理等)、报告管理(报告编制、审核、签发、打印等)、原始记录管理、仪器设备管理、物质试剂管理、文件管理、组织人员管理、标准管理、客户供应商管理、财务管理、查询统计等诸多模块为一体,组成一套完整的实验室综合管理和质量监控体系。
|
9月前
|
开发框架 数据可视化 前端开发
ASP.NET Core MVC+Quartz实现定时任务可视化管理页面
ASP.NET Core MVC+Quartz实现定时任务可视化管理页面
333 0
|
10月前
|
开发框架 监控 前端开发
ASP.NET实验室信息化管理平台(LIMS)源码
实验室信息管理系统(LIMS)是实验室人(人员)、机(仪器)、料(样品、材料)、法(方法、标准、质量)、环(环境)全面资源管理的实验室信息化管理系统,是一套完整的检验综合管理和产品质量监控体系,在满足日常管理要求,保证检验分析数据的严格管理和控制。它能全面优化实验室的检验管理工作,显著提升实验室的工作效率和生产力,提高质量控制水平。
60 0
|
开发框架 前端开发 JavaScript
ASP.NET云LIS管理系统源码
基于.NET core3.1,包含前处理、检验、报告、质控、统计分析、两癌等模块 ,有源码,有演示,有文档。
100 0
ASP.NET云LIS管理系统源码
|
SQL 存储 开发框架
ASP.NET 用户和角色管理 附加代码详解
ASP.NET 用户和角色管理 附加代码详解
ASP.NET 用户和角色管理 附加代码详解
|
存储 开发框架 .NET
ASP.NET中HTTP请求(Request)、响应(Response)以及状态管理讲解
ASP.NET中HTTP请求(Request)、响应(Response)以及状态管理讲解
ASP.NET中HTTP请求(Request)、响应(Response)以及状态管理讲解
|
SQL 开发框架 前端开发
ASP.NET MVC多表示例题-酒店管理
ASP.NET MVC多表示例题-酒店管理
224 0
ASP.NET MVC多表示例题-酒店管理
|
存储 开发框架 前端开发
ASP.NET Core 从入门到精通-资源收集导航
ASP.NET Core 从入门到精通-资源收集导航
385 0