如何在.net自定义控件引用外部资源

在asp.net中开发自定义控件时,如果我们要用到图片,外部css,js等文件,那么最好的方式就是将这些文件作为自定义控件嵌入的资源,随着控件一起打包成dll文件发布。那么我们要如何将这些文件设置为嵌入的资源,又如何在自定义控件引用这些文件呢?下面我们以一个css与js文件为例来做一演示。

 

方法/步骤

  • 首先当然是创建这两个文件了。我们在自定义控件的项目内创建两个文件,分别为JScript.js与Stylessheet.css文件。要使它们成为嵌入的资源,最重要的是在文件目录上点击右键,选择属性,在生成操作的选项选择"嵌入的资源",如下如图所示:
    分别设置好JScript.js与Stylessheet.css文件的该属性,这样,文件的处理就完成了。

    如何在.net自定义控件引用外部资源
  • 二,对嵌入资源的引用。
    在AssemblyInfo.cs文件中对资源的引用。
    除了设置文件的属性外,我们还需要设置对资源的引用,具体方法是:打开项目的AssemblyInfo.cs文件,在文件的最后面添加如下两行代码:

    [assembly: WebResource("ServerControl.SelectCtlReSource.Stylesheet.css", "text/css")]
    [assembly: WebResource("ServerControl.SelectCtlReSource.JScript.js", "text/javascript")]

    注意它的两个参数,第一个参数它是一个字符串,总体意思就是文件的路径,格式为"引用类的命名空间"+"资源所在文件夹"+"文件名",如"ServerControl.SelectCtlReSource.Stylesheet.css",ServerControl为命名空间,SelectCtlReSource为css所在的文件夹,Stylesheet.css为文件名。第二个参数是指明文件的类型,包括"img/gif","text/css","text/javascript"等常用文件格式。

    注意:添加引用时需要为AssemblyInfo.cs添加命名空间using System.Web.UI的引用。

     

    那么要如何在自定义类中使用这两个外部文件呢?

  • 三,使用外部css资源
    我们可以利用Page.ClientScript.GetWebResourceUrl方法来获取到外部资源的地址,代码如下:

    string cssUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), 
    "ServerContrAssemblyInfo.cs.SelectCtlReSource.Stylesheet.css");
    HtmlLink link = new HtmlLink();
    link.Href = cssUrl;
    link.Attributes.Add("rel", "stylesheet");
    link.Attributes.Add("type", "text/css");
    Page.Header.Controls.Add(link);

    解释一下代码的意思:
    1,注意Page.ClientScript.GetWebResourceUrl的三个参数,第一个就不讲了,为资源的类型。第二个比较重要,它的格式与上面引用格式一样。
    2,获取到资源的url后,后面的代码就是将该css注册到页面的head中,这个就不讲解了。

  • 四,使用外部javascript资源
    引用javascript文件的方法与引用css的文件稍有些不一样。使用css文件为获取到外部css的路径后再通过HtmlLink类将css添加页面的head部分中,而javascript则可以直接通过RegisterClientScriptResource来注册,示例代码如下:

    Page.ClientScript.RegisterClientScriptResource(this.GetType(), "ServerControl.SelectCtlReSource.JScript.js");

    好了,这样就完成了在自定义控件中对外部资源的引用。平时我们看到页面中生成的WebResource.axd后面添加一堆的字符串,总觉的webresource会是一个很复杂的东西,其实,弄懂了它的规则后,这些东西就很容易理解并记住了,大家做做练习吧。

    我们在上例中注册的两个文件,最终会在html文件中生成类似如下代码:

    <link rel="stylesheet" type="text/css" href="/WebResource.axd?d=21KpM8lphlA-zR5ejP1pnghDV1cXwkQpw-QlXFdu3jwwMymuuN49ab8qvx6fH66D6oQMw7WWdKIXCE8T4DOfe0ype4VWtox9HdA0pLREJOcBpgcflwup5Cm6zjgCUJwiGQlkWGk6_Bv-90hWtF9dAIDIeL5aB-0a7Rac1Uw5OnIOe2C70&t=634746559960937500" />

    <script src="/WebResource.axd?d=8E4J6LzCJ4MPILLeEtw_QNoqvym1oFCPjfVEzI5E8b5ofI6AJjeHDdpnxnSLV-FCvsooBv9RwPT_SA1NvURXaD42LnY1&t=634751762881093750" type="text/javascript"></script>

  • 参考资料

    WebResource-asp.net自定义控件引用外部资源方法
    本文来源于: http://www.lmwlove.com/ac/ID879

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值