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

仿照效法文献:WebResource达成在自定义控件中内嵌JS文件
 

大家能够尝试

    ASP.NET 2.0提供的Web
Resources管理模型,很好的消除了image、css、script等外界财富的管住难题。WebResourceAttribute是三个metedata
attribute,它能够让大家探问到嵌入到assembly中的能源。

4.向品种中增多一个类, 实例:
using System;
using System.Drawing;
using System.Web.UI;
using System.Web;
using System.Globalization;

 2. 财富文件必须内放置程序聚集。

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);
}

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

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

     }

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

援引方法有二种:

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”)]

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

base.RenderContents(output);
}
}
}

 

/// <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();

③ 以上筹划专业产生后,下面就足以获取内嵌的财富文件了。

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

  1. WebResource简介

 

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

主意一:找到AssemblyInfo.cs文件,增多代码:

 1. 内嵌财富的文书名类似eWebapp.Upload.upLoad.js

参数表达:率先个是财富的名字,第二个是能源的mime-type名。
财富的名字命名一般包罗多个部分:<缺省的命名空间.><扩充命命名空间.><文件名>
缺省的命名空间正是项指标命名空间,文件名就是财富文件的名号。
高级中学档扩张命名空间正是体系中的目录结构.倘让你的财富文件就在档期的顺序的根目录下,扩充命名空间就没有必要了,间接那样写就能够了.
<缺省的命名空间.> <文件名>.
可是只要你在品种中发出目录结果的话,就要采用扩大命名空间了。举个例子,要是以上能源文件存在目录Js下:

问题汇报:VS会活动把default namespace加到能源文件后面。

艺术二:在其余三个class文件中,均可增加援用的宣示;

 图片 1 

         writer.AddAttribute(“onchange”, “newUpload(this);”);

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

              protected override void OnPreRender(EventArgs e)

 

    在应用内嵌的server
side财富时,首先必须把能源文件Embedded内嵌到我们的assembly程序聚集,然后在Application中的AssemblyInfo.cs文件中增添上这么些文件的引用。具体进度:

           }

注意:此段主假如为控件追加onchange事件,也得以通过在创设分界面时一贯抬高,如:

 图片 2 

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

  1. WebResource的使用

 

         base.AddAttributesToRender(writer);

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

① 文件内嵌:将所要内嵌的文件【生成操作】属性退换为——》内置的财富

   
ASP.NET(1.0/1.1)给大家提供了三个支付WebControl的编制程序模型,于是大家摆脱了asp里面包车型客车include格局的复用方式。然而1.0/1.1提供的Web控件开采模型对于拍卖未有image、css等外界财富的组件还算比较贯虱穿杨,script即使比很多时候也是外界能源,但在开拓控件的时候大家习贯把script使用Page.Register…Script()来放置模块,因为紧密的东西更便于大家复用,用三个dll就能够缓慢解决问题。

     
资源名必须和AssemblyInfo.cs文件中注解的平等。假使财富名错误或文件不设有,在位置中生成的脚步就达不到预期结果。

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

 备注:

在类库中的财富  其余类型中要采纳 要求安置才行

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

② 文件内嵌达成后,上面就必要对曾经内嵌的文本举办援引。

解决:借使把暗中同意名称空间改为空就足以了。

当中的<script src=”/WebResource.axd?d=…… 正是对剧本财富的调用。

④ 生成的页面时如此的:

                      base.OnPreRender(e);

           ” d ” 代表呼吁 Web 能源。  (encrypted identifier)
           ” t ” 是 timestamp 对程序集,
那促进在规定倘诺已经对财富的改变诉求。

              {

並且,还索要增多命名空间using System.Web.UI;

1、  看到网络有一些人说这么不管用,原因是VS暗中认可的命名空间搞了鬼。

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

只是,在商讨的经过中,笔者并不曾遇上此难点。只怕假设实际弄不成,也不晓得何地错了,不要紧用反编写翻译工具Reflector来查看一下变动的能源文件是还是不是正确。

   }

 

 3. 再次回到的能源文件Url剖判:

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

     {

(放在最高档namespace外就行)

       {

小提示:

相关文章