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. 今天发现新大陆:haml和Emmet

    其实一开始小渣渣我只是想接触一下(css预处理器)sass,可是突然冒出一个haml. 原文是酱紫的. Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言,它诞生于2007年,是最大的成熟 ...

  2. 【github】github 使用教程初级版

    github 是一个基于 git 的代码托管平台,付费用户可以建私人仓库,免费用户只能使用公共仓库.对于一般人来说公共仓库就已经足够了,而且也没多少代码来管理.下面简单介绍如何使用 github,供初 ...

  3. 解决Win10服务主机本地系统网络受限

    换成win10有一段时间了,界面风格比win7好看,但有部分程序还是不兼容,还好用虚拟机可以将就解决.但有一个问题一直困扰了我好久,今天终于解决了. 问题描述 在进程中,服务主机:本地系统(网络受限) ...

  4. CRM 2013 系统设置新功能二:Entity images 图像字段

    CRM2013系统默认的许多实体都已经有了图像的选择,如 右上角可以设置当前用户的头像. 客户.联系人等都可以,下面将介绍一下此项新功能: 一.实体中新建图像字段,其中系统自动命名entityinag ...

  5. C语言柔性数组

    结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组.但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内 ...

  6. iOS设计模式之简单工厂模式

    简单工厂模式 基本理解 到底要实例化谁,将来会不会增加实例化的对象,比如计算器增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂. 通过使用工厂模式,我们可以 ...

  7. 【读书笔记】iOS-GCD-多线程编程

    一,现在一个物理的CPU芯片实际上有64个(64核)CPU,如果1个CPU核虚拟为两个CPU核工作,那么一台计算机上使用多个CPU核就是理所当然的事了.尽管如此,“1个CPU核执行的CPU命令为一条无 ...

  8. mysql中FIND_IN_SET的使用方法

    在mysql中,有时我们在做数据库查询时,需要得到某字段中包含某个值的记录,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,这时候mysql的FIND_IN_ ...

  9. Asp.net Identity 2.0 作弊条

    Moving ASP.NET Identity model to class library http://stackoverflow.com/questions/23446919/moving-as ...

  10. JSON转换类(一)--过滤特殊字符,格式化字符型、日期型、布尔型

    /// <summary> /// 过滤特殊字符 /// </summary> private static string String2Json(String s) { St ...