WebResource实现在自定义控件中内嵌JS文件和样式文件
来源:互联网 发布:用友软件下载免费版 编辑:程序博客网 时间:2024/06/07 16:59
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文件中添加上这些文件的引用。具体过程:
① 文件内嵌:右键js属性 将所要内嵌的文件【生成操作】属性更改为——》嵌入的资源
② 文件内嵌完成后,下面就需要对已经内嵌的文件进行引用。
引用方法有两种:
方法一:找到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&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来查看一下生成的资源文件是否正确。
反编译工具下载地址:http://download.csdn.net/source/1430291
来源:http://blog.csdn.net/sytWeibo/archive/2009/07/06/4326408.aspx
自定义控件嵌入JS文件和样式文件
http://douhuawen.blog.163.com/blog/static/182426732010054932411/
- WebResource实现在自定义控件中内嵌JS文件和样式文件
- WebResource实现在自定义控件中内嵌JS文件
- WebResource实现在自定义控件中内嵌JS文件
- 利用WebResource属性实现资源文件自包含于控件
- js实现文件上传自定义样式
- 自定义文件上传控件样式
- 自定义的样式文件和js文件打成webjar
- html文件上传控件file自定义样式
- 在jsp文件中的js中如何实现改变css文件中的样式的属性?
- WebResource简介 自定义控件的资源嵌入
- android 自定义样式文件
- 自定义file文件样式
- 文件上传自定义样式
- 自定义input[file](文件上传控件)样式-兼容IE6
- 代码干货 | 自定义文件上传控件样式-input透明法
- 自定义控件实现多文件拷贝进度
- js实现文件下载自定义下载路径
- Node.js自定义实现文件路由功能
- Swing开发带图片的List
- linux创建用户
- Swing开发透明窗体
- JavaScript eval() 函数
- 找CMS
- WebResource实现在自定义控件中内嵌JS文件和样式文件
- 去掉鼠标点击后的虚线边框
- 数据库中数据导出成excel
- 推荐几个Google Sitemap工具
- magento----已经存在的图片地址,生成自定义尺寸的图片
- git配置global信息
- VS调试JavaScript脚本
- div 设置隐藏后,如何不让它占位
- 用 Dialplan 实现IVR交互