【转】WebResource达成在自定义控件中内嵌JS文件

在类库中的能源  别的门类中要动用 要求安放才行

1.向品种中添加Jscript文件
//script_1.js—–
function doClick1()
{
alert(“OK1_wufeng”);
}
//script_2.js—–
function doClick2()
{
alert(“OK2”);
}

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

2.消除方案能源管理器中,右键查看script_1.js和script_2.js的质量,把高档中的“生成操作”属性设置成“嵌入的财富”。

 

3.向AssemblyInfo.cs文件中添加如下行:(注意域名wf.ClientScriptResourceLabel)
[assembly:
System.Web.UI.WebResource(“wf.ClientScriptResourceLabel.script_1.js”,
“application/x-javascript”)]
[assembly:
System.Web.UI.WebResource(“wf.ClientScriptResourceLabel.script_2.js”,
“application/x-javascript”)]

  1. WebResource简介

4.向项目中添加贰个类, 实例:
using System;
using System.Drawing;
using System.Web.UI;
using System.Web;
using System.Globalization;

   
ASP.NET(1.0/1.1)给我们提供了一个支付WebControl的编制程序模型,于是我们摆脱了asp里面包车型大巴include格局的复用情势。然则1.0/1.1提供的Web控件开发模型对于拍卖没有image、css等外部财富的零件还算比较弹无虚发,script尽管很多时候也是外表财富,但在付出控件的时候大家习惯把script使用Page.Register…Script()来放置模块,因为紧凑的事物更方便大家复用,用七个dll就足以消除难点。

namespace wf.ClientScriptResourceLabel
{
public class ClientScriptResourceLabel :
System.Web.UI.WebControls.WebControl
{
//调用脚本能源
protected override void OnPreRender(EventArgs e)
{
if (this.Page != null)
{
this.Page.ClientScript.RegisterClientScriptResource(typeof(ClientScriptResourceLabel),
“wf.ClientScriptResourceLabel.script_1.js”);
this.Page.ClientScript.RegisterClientScriptResource(typeof(ClientScriptResourceLabel),
“wf.ClientScriptResourceLabel.script_2.js”);
}
base.OnPreRender(e);
}

    ASP.NET 2.0提供的Web
Resources管理模型,很好的化解了image、css、script等外部财富的田间管理难点。WebResourceAttribute是1个metedata
attribute,它能够让大家走访到嵌入到assembly中的财富。

/// <summary>
/// 突显控件的点子RenderContents
/// </summary>
protected override void RenderContents(HtmlTextWriter output)
{
output.AddAttribute(“id”, “1”);
output.AddAttribute(“type”, “checkbox”);
output.AddAttribute(“value”, “测试1”);
output.AddAttribute(“onclick”, “javascript:doClick1();”);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();

  1. WebResource的使用

output.AddAttribute(“id”, “2”);
output.AddAttribute(“type”, “checkbox”);
output.AddAttribute(“value”, “测试2”);
output.AddAttribute(“onclick”, “javascript:doClick2();”);
output.RenderBeginTag(HtmlTextWriterTag.Input);
output.RenderEndTag();

    在动用内嵌的server
side能源时,首先必须把能源文件Embedded内嵌到大家的assembly程序集中,然后在Application中的AssemblyInfo.cs文件中添加上这一个文件的引用。具体经过:

base.RenderContents(output);
}
澳门皇冠官网app,}
}

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

世家能够试行

 澳门皇冠官网app 1 

② 文件内嵌完成后,上边就需求对曾经内嵌的公文进行引用。

引用方法有二种:

格局一:找到AssemblyInfo.cs文件,添加代码:

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

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

 澳门皇冠官网app 2 

 

格局二:在别的二个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来查阅一下扭转的财富文件是或不是科学。

相关文章