在类库中的资源  其他项目中要使用 需要嵌入才行

参考文献:WebResource实现在自定义控件中内嵌JS文件

1. 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等外部资源的管理问题。WebResourceAttribute是一个metedata attribute,它可以让我们访问到嵌入到assembly中的资源。

2. WebResource的使用

在使用内嵌的server side资源时,首先必须把资源文件Embedded内嵌到我们的assembly程序集中,然后在Application中的AssemblyInfo.cs文件中添加上这些文件的引用。具体过程:

① 文件内嵌:将所要内嵌的文件【生成操作】属性更改为——》嵌入的资源

② 文件内嵌完成后,下面就需要对已经内嵌的文件进行引用。

引用方法有两种:

方法一:找到AssemblyInfo.cs文件,添加代码:

[assembly: WebResource("eWebapp.Upload.upLoad.js", "text/javascript")]

同时,还需要添加命名空间using System.Web.UI;

方法二:在任何一个class文件中,均可添加引用的声明;

[assembly: WebResource("eWebapp.Upload.upLoad.js", "text/javascript")]

(放在最高级namespace外就行)

参数说明:第一个是资源的名字,第二个是资源的mime-type名。
资源的名字命名一般包括三个部分:<缺省的命名空间.><扩展命命名空间.><文件名>
缺省的命名空间就是项目的命名空间,文件名就是资源文件的名称。
中间扩展命名空间就是项目中的目录结构.如果你的资源文件就在项目的根目录下,扩展命名空间就不需要了,直接这样写就可以了. <缺省的命名空间.> <文件名>. 但是如果你在项目中产生目录结果的话,就要使用扩展命名空间了。例如,假设以上资源文件存在目录Js下:

[assembly: System.Web.UI.WebResource("eWebapp.Upload / js / upLoad.js
", " text/javascript ")]

③ 以上准备工作完成后,下面就可以获取内嵌的资源文件了。

protected override
void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)

{

writer.AddAttribute("onchange", "newUpload(this);");

base.AddAttributesToRender(writer);

}

注意:此段主要是为控件追加onchange事件,也可以通过在创建界面时直接添加,如:

f.Attributes.Add("onchange",
"javascript:newUpload(this);");

public class Upload : System.Web.UI.WebControls.WebControl

{

protected
override void
OnPreRender(EventArgs e)

{

Page.ClientScript.RegisterClientScriptInclude("upLoad",                        Page.ClientScript.GetWebResourceUrl(this.GetType(), "eWebapp.Upload.upLoad.js"));

base.OnPreRender(e);

}

}

④ 生成的页面时这样的:

<script
src="/WebResource.axd?d=SfSlYQLv-RU-lSlTT0gProNFY7jkKs9lj16Lbul83Y0oicWZcUHLXICfPyGF1YsG0&amp;t=633813613197656250"
type="text/javascript"></script>

其中的<script src="/WebResource.axd?d=...... 就是对脚本资源的调用。

 备注:

1. 内嵌资源的文件名类似eWebapp.Upload.upLoad.js

Syntax : eWebapp.Upload/ upLoad.js
-->eWebapp.Upload.upLoad.js

资源名必须和AssemblyInfo.cs文件中声明的一样。如果资源名错误或文件不存在,在地址中生成的脚步就达不到预期结果。

2. 资源文件必须内嵌入程序集中。

3. 返回的资源文件Url分析:

WebResource.axd?d=加密后的标识符 & T = 时间戳值。
          其中:

" d " 代表请求 Web 资源。  (encrypted
identifier)
           " t " 是 timestamp 对程序集, 这有助于在确定如果已经对资源的更改请求。

小提示:

1、  看到网上有人说这样不管用,原因是VS默认的命名空间搞了鬼。

问题描述:VS会自动把default namespace加到资源文件前面。

解决:只要把默认名称空间改为空就可以了。

但是,在研究的过程中,我并没有碰到此问题。或许如果实在弄不成,也不知道哪里错了,不妨用反编译工具Reflector来查看一下生成的资源文件是否正确。

【转】WebResource实现在自定义控件中内嵌JS文件的更多相关文章

  1. APP中内嵌H5页面为什么不能下载?

    在APP中内嵌H5页面,若页面上存在下载链接,没有任何反应,为什么呢? 原因是app中内嵌的H5页面是WebView解析的,什么是WebView呢? 在Android手机中内置了一款高性能webkit ...

  2. Unity中内嵌网页插件UniWebView

    一.常见Unity中内嵌网页实现方式: 1.UnityWebCore只支持windows 2.Unity-Webview支持Android,IOS 3.UniWebView支持mac os,Andro ...

  3. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来

    代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

  4. ABP官方文档翻译 6.5 内嵌资源文件

    内嵌资源文件 介绍 创建内嵌文件 xproj/project.json形式 csproj形式 添加内嵌资源管理器 使用内嵌视图 使用内嵌资源 ASP.NET Core 配置 忽略文件 重写内嵌文件 介 ...

  5. Eclipse spket插件 内置js文件

    这一篇将怎么在spket内置js文件,而不用用户自己去添加.    1. 在开发的Eclipse的 运行配置将下面几个插件勾选上.     2. 在org.eclipse.ui.startup拓展里执 ...

  6. win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件

    win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...

  7. vue2项目中引用外部js文件

    vue2项目目录如下(utils文件夹是自己手工建的,然后在utils里新建js文件): 使用import导入文件时,注意路径,路径不对会报错: 导入之后使用外部js函数时,直接写导入时的名字加小括号 ...

  8. Linux内核--C语言中内嵌汇编 asm __volatile__

    在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可 ...

  9. Linux内核系列—C语言中内嵌汇编 asm __volatile__,asm__volatile_【转】

    转自:http://www.bkjia.com/Androidjc/1109412.html 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器, ...

随机推荐

  1. 剑指offer第二版面试题1:数组中重复的数字(JAVA版)

    题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复的次数.请找出数组中任意一个重复的数字.例如如果输入长度为7的数组{ ...

  2. PAT_A1062#Talent and Virtue

    Source: PAT A1062 Talent and Virtue (25 分) Description: About 900 years ago, a Chinese philosopher S ...

  3. 2019秋Java课程总结&实验总结一

    1.打印输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个"水仙花数". 实验源码: ...

  4. python中函数的定义及调用

    python中函数的定义及使用方法 1.函数的概念:函数是将具有独立功能的代码块组织为一个整体,使其具有特殊功能的代码集; 2.函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率; 3.函数 ...

  5. opencv2.4.9+vs2012安装配置

    需要下载并安装vs2012  http://pan.baidu.com/s/1qXP76CO     第一次启动会提示要求输入激活序列号,请输入:YKCW6-BPFPF-BT8C9-7DCTH-QXG ...

  6. Linux 系统 /var/log/journal/ 垃圾日志清理

    CentOS系统中有两个日志服务,分别是传统的 rsyslog 和 systemd-journal systemd-journald是一个改进型日志管理服务,可以收集来自内核.系统早期启动阶段的日志. ...

  7. Dom编程优化

    对Dom的访问代价是昂贵,在富网页应用中通常是性能的瓶颈,所以对Dom的优化十分重要. 一.访问和修改Dom元素 浏览器通常要求JavaScript和Dom实现保持独立的.例如,在Internet E ...

  8. ps切图的基本操作

    参考线和辅助线 ctrl+r呼出标尺,只有在移动工具(快捷键v)下,鼠标左键从标尺上可以拖出来新的参考线.将参考线拖回标尺即是删除. 导出切片 快捷键ctrl+alt+shift+s ,选择png-2 ...

  9. 【缓存】缓存穿透、缓存雪崩、key重建方案

    一.缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步: 缓存层 ...

  10. 帝国cms采集关键字方法

    1.系统设置——管理数据表——管理字段——增加字段(字段名:keywords字段标识:关键词字段类型:字符型0-255字节长度:70存放表:主表前台内容显示:钩选"将回车替换成换行符&quo ...