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

参考文献: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. Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)

    文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...

  2. 1、postman介绍与安装

    postman介绍 官方介绍:Developers use Postman to build modern software for the API-first world. 个人理解postman是 ...

  3. 【Java多线程系列四】控制线程执行顺序

    假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatc ...

  4. python去除rpm仓库中同名低版本的包

    编程思路1 遍历目标路径的rpm包并保存特性包列表: 2 利用python模块rpmUtils提取RPM包的特征信息:包名  版本号 架构 3 遍历特性列表中存在重复包名的rpm, 将低版本的rpm包 ...

  5. PCA降维-最大,最小方差解释

    转自http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html http://www.cnblogs.com/jerrylead/ ...

  6. 47-Ubuntu-系统信息-2-df和du查看磁盘和目录空间占用

    序号 命令 作用 01 df -h disk free 显示磁盘剩余空间;-h以人性化的方式显示文件大小 02 du -h [目录名] disk usage 显示目录下的文件大小 注:显示磁盘信息的时 ...

  7. eduCF#61 C. Painting the Fence /// DP 选取k段能覆盖的格数

    题目大意: 给定n m 接下来给定m个在n范围内的段的左右端 l r 求选取m-2段 最多能覆盖多少格 #include <bits/stdc++.h> using namespace s ...

  8. mysql 记录(record)

    以下内容来源于<mysql内核:Innodb存储引擎 卷1> 简单介绍物理记录和大记录.仅为理解mysql 索引基础 存储结构这一章节而写. mysql的默认存储引擎为Innodb.Inn ...

  9. GetModuleHandleW 分析

    首先查询MSDN,可以清楚地看到 位于kernel32 dll 里面. 有目标就好办,找到这个dll,然后,开工,进入IDA. 跳啊 就到下面那块了. 遗憾的是...显然不是这里阿,实际上下一块调用的 ...

  10. TRUNCATE - 清空一个表

    SYNOPSIS TRUNCATE [ TABLE ] name DESCRIPTION 描述 TRUNCATE 快速地从一个表中删除所有行.它和无条件的 DELETE 有同样的效果,不过因为它不做表 ...