Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > 组件开发之ASP.NET中集成资源文件的服务器端控件开发
【标  题】:组件开发之ASP.NET中集成资源文件的服务器端控件开发
【关键字】:ASP.NET
【来  源】:http://dajianshi.cnblogs.com/archive/2006/04/24/383626.html

组件开发之ASP.NET中集成资源文件的服务器端控件开发

Your Ad Here 博客园 - 今日红缨在手 - 组件开发之ASP.NET中集成资源文件的服务器端控件开发
  博客园 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  16 随笔 :: 0 文章 :: 14 评论 :: 0 Trackbacks
    一个ASP.net中的控件,往往要使用到一些图片、CSS和脚本JS文件等等,如果要求用户把这些资源文件自己复制到网站目录中,往往让人感觉很麻烦很不专业。如果能够在控件中包含这些资源,能够自动引用,不单单看上去很专业而且少了一些不必要的麻烦,比如资源文件的缺失、应用路径不对等等问题。那么怎么才能做到控件自己携带这些资源文件并且在程序中引用呢?
    一、.Net1.1及以前版本中,FrameWork中没有内置的支持,所以只能自己实现:
    1.利用ASP.net支持子目录中Web.Config的特点,在运行时动态在网站的根目录下创建自己定义的控件的子目录,然后在里面生成一个web.config文件,设置好Http处理程序设置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    
<system.web>
         
<httpHandlers>
                
<add verb="*" path="*" type="My.WebForm.DateControl.HttpHandler, My.WebForm.DateControl"/>    
        
</httpHandlers>
    
</system.web>
</configuration>
type字符串中时自己实现的HttpHandler类名,后面是所在的Dll文件名称。
    2.实现自己的HttpHandler类,用于返回资源文件,这里针对脚本和图像实现了不同的方法。
自定义HttpHandler

在那两个类中分别实现了读取和返回脚本和图像的数据流, 这个大家都不陌生,就不再缀述了.
    3.再Render时这样引用资源

string path=System.String.Concat(resolvePath, "SCRIPTHANDLER.ASPX?filename=dateCtl.js");
writer.write(
"<img src='"+path+"'>");
其中,resolvePath=Helper.Context.Request.ApplicationPath + 自定义的控件目录。这样由于我们对资源的应用都被子目录中的webconfig配置转换到了我们自定义的HttpHandler来处理,就实现了自包含的资源引用。
    二、。Net2.0中,这些已经用不到了(可恶的微软,沾沾自喜的许多技术都被谋杀了:)). dot Net FrameWork中已经为我们内置了一个HttpHandler,处理资源文件的引用。
    1。在控件中加入类属性WebResourceAttribute
[assembly: WebResource("My.WebForm.ExGridView.Files.ExGridView.js""text/javascript")]
[assembly: WebResource(
"My.WebForm.ExGridView.Files.add.gif""image/gif")]
[assembly: WebResource(
"My.WebForm.ExGridView.Files.cancel.gif""image/gif")]
[assembly: WebResource(
"My.WebForm.ExGridView.Files.delete.gif""image/gif")]
namespace My.WebForm.ExGridView
{
    [ToolboxData(
"<{0}:ExGridView runat=server></{0}:ExGridView>")]
    [ParseChildren(
true)]
    
public class ExGridView : GridView,IPostBackDataHandler

}

   这里要注意的是My.WebForm.ExGridView.Files并不是实际的目录名字,My.WebForm.ExGridView是控件的namespace,只有Files是实际的想对于控件项目的根目录的子目录名称,必须这样全限定名引用,否则找不到资源!另外别忘了把这些资源文件的编译方式生成操作改成“嵌入得资源”
   2。在需要引用的地方使用CLientScriptManager.GetWebResourceUrl获得资源的引用:

btn.CancelImageUrl =  Page.ClientScript.GetWebResourceUrl(this.GetType(),"My.WebForm.ExGridView.Files.cancel.gif");
同样要注意使用全限定名,而且是大小写区分的。好了,在asp.net2.0中就这么简单,从现在开始把资源文件打包到控件中吧。
posted on 2006-04-24 16:16 大剑师 阅读(238) 评论(0)  编辑 收藏 收藏至365Key 所属分类: ASP.NET 控件开发
AjaxPro V.6.2.16.1使用数组报错:【上一篇】
什么情况下可以而且应该共享你的代码?:【下一篇】
【相关文章】
  • 使用ASP.NET Atlas开发随输入内容自动调整行数的textarea
  • ASP.NET 2.0 中的客户端脚本
  • 使用ASP.NET Atlas实现拖放(Drag & Drop)效果(下)
  • AggregateCacheDependency、CacheDependency、SqlCacheDependency Asp.net 2.0和Sql Server的缓存管理和使用...
  • 使用ASP.NET Atlas开发In Place Editing输入控件
  • ASP.NET2.0 WebRource,开发微调按钮控件
  • 在 Asp.Net Web 应用程序中长时间装载页面时显示进度条
  • java与asp.net之间通信
  • ASP.NET2.0 ObjectDataSource的使用详解
  • ASP.NET2.0控件一览---标准控件(2)
  • 【随机文章】
  • 计算机体系结构
  • [原创]善用google的what is
  • 百度之星程序设计大赛初赛题目
  • 通用线程: 高级文件系统实现者指南,第 5 部分
  • SetupFactory介绍[原创]
  • 主板上的防火墙(2)
  • oracle 安装 乱码问题
  • Eclipse on Redhat FC5 [附图]
  • 数据迁移 : 从PostgreSQL到Oracle
  • 把FreeBSD6.0作为自己的桌面
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.