rom:http://www.lmwlove.com/ac/ID879

在asp.net中开发自定义控件时,如果我们要用到图片,外部css,js等文件,那么最好的方式就是将这些文件作为自定义控件嵌入的资源,随着控件一起打包成dll文件发布。那么我们要如何将这些文件设置为嵌入的资源,又如何在自定义控件引用这些文件呢?下面我们以一个css与js文件为例来做一演示。

一,首先当然是创建这两个文件了。我们在自定义控件的项目内创建两个文件,分别为JScript.js与Stylessheet.css文件。要使它们成为嵌入的资源,最重要的是在文件目录上点击右键,选择属性,在生成操作的选项选择"嵌入的资源",如下如图所示:

分别设置好JScript.js与Stylessheet.css文件的该属性,这样,文件的处理就完成了。

二,对嵌入资源的引用。
在AssemblyInfo.cs文件中对资源的引用。
除了设置文件的属性外,我们还需要设置对资源的引用,具体方法是:打开项目的AssemblyInfo.cs文件,在文件的最后面添加如下两行代码:

[assembly: WebResource("ServerControl.SelectCtlReSource.Stylesheet.css", "text/css")]
[assembly: WebResource("ServerControl.SelectCtlReSource.JScript.js", "text/javascript")]

注意它的两个参数,第一个参数它是一个字符串,总体意思就是文件的路径,格式为"引用类的命名空间"+"资源所在文件夹"+"文件名",如"ServerControl.SelectCtlReSource.Stylesheet.css",ServerControl为命名空间,SelectCtlReSource为css所在的文件夹,Stylesheet.css为文件名。第二个参数是指明文件的类型,包括"img/gif","text/css","text/javascript"等常用文件格式。

注意:添加引用时需要为AssemblyInfo.cs添加命名空间using System.Web.UI的引用。

那么要如何在自定义类中使用这两个外部文件呢?
三,使用外部css资源
我们可以利用Page.ClientScript.GetWebResourceUrl方法来获取到外部资源的地址,代码如下:

string cssUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(),  
"ServerContrAssemblyInfo.cs.SelectCtlReSource.Stylesheet.css");
HtmlLink link = new HtmlLink();
link.Href = cssUrl;
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(link);

解释一下代码的意思:
1,注意Page.ClientScript.GetWebResourceUrl的三个参数,第一个就不讲了,为资源的类型。第二个比较重要,它的格式与上面引用格式一样。
2,获取到资源的url后,后面的代码就是将该css注册到页面的head中,这个就不讲解了。

四,使用外部javascript资源
引用javascript文件的方法与引用css的文件稍有些不一样。使用css文件为获取到外部css的路径后再通过HtmlLink类将css添加页面的head部分中,而javascript则可以直接通过RegisterClientScriptResource来注册,示例代码如下:

Page.ClientScript.RegisterClientScriptResource(this.GetType(), "ServerControl.SelectCtlReSource.JScript.js");

好了,这样就完成了在自定义控件中对外部资源的引用。平时我们看到页面中生成的WebResource.axd后面添加一堆的字符串,总觉的webresource会是一个很复杂的东西,其实,弄懂了它的规则后,这些东西就很容易理解并记住了,大家做做练习吧。

我们在上例中注册的两个文件,最终会在html文件中生成类似如下代码:

<link rel="stylesheet" type="text/css" href="/WebResource.axd?d=21KpM8lphlA-zR5ejP1pnghDV1cXwkQpw-QlXFdu3jwwMymuuN49ab8qvx6fH66D6oQMw7WWdKIXCE8T4DOfe0ype4VWtox9HdA0pLREJOcBpgcflwup5Cm6zjgCUJwiGQlkWGk6_Bv-90hWtF9dAIDIeL5aB-0a7Rac1Uw5OnIOe2C70&t=634746559960937500" />

<script src="/WebResource.axd?d=8E4J6LzCJ4MPILLeEtw_QNoqvym1oFCPjfVEzI5E8b5ofI6AJjeHDdpnxnSLV-FCvsooBv9RwPT_SA1NvURXaD42LnY1&t=634751762881093750" type="text/javascript"></script>

WebResource-asp.net自定义控件引用外部资源方法的更多相关文章

  1. ASP.NET自定义控件加载资源WebResource问题

    最近项目用日期控件,想把My97的资源文件跟TextBox封装成一个DatePicker控件,其实很简单的意见事情,但是还是用了一天多的时间,主要的问题就是解决资源文件加载的问题.通过一天多的努力,得 ...

  2. css文件内引用外部资源文件的相对路径

    1.default.css文件内容(位于css文件夹下): .ClassName .ClassName .ClassName .page-sidebar .sidebar-search .submit ...

  3. SpringMVC给外部资源加版本号避免缓存

    一.属性文件:version.properties ->内容:version=201608  二.java代码 public class configVersion implements Ser ...

  4. javascript 多线程Web Worker不引用外部js文件的方法

    最近在Android开发中 Webview通过调用JavascriptInterface的方式与App交互 在交互的过程中,有些App上的操作时间会比较长,Web中调用的话会造成程序假死的情况 于是想 ...

  5. awk引用外部变量及调用系统命令方法

    目标:想用awk与scp命令批量传送文件 前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html) 实现脚本方法: ...

  6. java 编译 运行 及 引用外部 jar 包的方法

    1. 环境变量配置 JAVA_HOMEC:\Program Files\Java\jdk1.8.0_121; PATH%PATH%;C:\Java\jdk1.6.0_30\bin; CLASSPATH ...

  7. ASP.NET MVC Areas View 引用 外部母版视图

    ASP.NET MVC Area => Areas View 引用 外部母版视图 创建项目:MVCSite.Area 创建mvc area 1.Areas View 引用 外部母版视图 1.1 ...

  8. 利用命令行引用外部jar包以使程序正常执行的4种方法

    声明:本博客为原创博客.未经同意.不得转载!原文链接为http://blog.csdn.net/bettarwang/article/details/30976069 平时写一些小的Java Demo ...

  9. 页面中如何引用外部的HTML(四种方法)

    页面中如何引用外部的HTML(四种方法) 一.总结 一句话总结:a.iframe标签        b.ajax引入代码片段        c.link import的方法导入        d.re ...

随机推荐

  1. 【高级功能】使用canvas元素(第二部分)

    本文将继续介绍canvas的功能,展示如何绘制更复杂的图形(包括圆弧和曲线),如何使用剪裁区域来限制操作以及如何绘制文本.还是介绍可以应用在画布上的特效和变换,包括阴影.透明度.旋转和坐标重映射. 1 ...

  2. Engine中如何更改lyr文件数据源的相对路径

    以下是使用relativebase存储layerfile的代码,如果需要修改数据源只要修改ILayer即可: string folderpath = @E:相对路径; string layerfile ...

  3. Android Java 自定义异常

    1.自定义异常 package com; public class ZeroException extends Exception { private static final long serial ...

  4. Android 购物车功能的实现

    首先,众所周知,ListView是Android最常用的控件,可以说是最简单的控件,也可以说是最复杂的控件. 作为一个Android初级开发者,可能会简单的ListView展示图文信息. 作为一个有一 ...

  5. iptables基本操作

    一.基本操作 #启动防火墙 service iptables start #停止防火墙 service iptables stop #重启防火墙 service iptables restart #查 ...

  6. HashMap,HashTable,TreeMap区别和用法

    开始学HashTable,HashMap和TreeMap的时候比较晕,觉得作用差不多,但是到实际运用的时候又发现有许多差别的.需要大家注意,在实际开发中以需求而定. java为数据结构中的映射定义了一 ...

  7. IOS内存警告处理

    IPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息.收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露 ...

  8. 【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)

    关于AutoLayout,最早从iOS6开始引入使用.   主要功能是使用约束,对视图进行相对布局,以适应不同屏尺的变换.   网上大量的资料都在介绍xib和storyboard,如何使用AutoLa ...

  9. android创建自定义控件

    新建一个布局title.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...

  10. win7操作技巧

    Q : 打开文件夹默认最大化A :随便打开一个文件夹 鼠标移动到左上角 然后点击鼠标左键 选择“最大化” 后关闭 之后每次打开就是最大化了