在程序集中嵌入资源

本文介绍如何在程序集中嵌入JS脚本、图片和CSS文件,以简化部署流程并提高维护效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要嵌入资源?

我们可以在程序集中嵌入js,图像,css文件.

将所依赖的资源嵌入至一个单独的程序集中,可以使程序集的用户不用担心是否已将js,图像,css文件置于某个文件夹下,是否设置了相应的权限.

通过将js文件作为资源嵌入Dll中,可以避免在cs代码中写入js,以此更好的分离程序代码与javascript代码,这样不但可以降低部署的复杂度,更可以带来易于维护的好处。

一、如何在程序集中嵌入js脚本

1.创建程序集

新建类库,命名为JsLib.并添加对System.Web的引用,然后建立目录script,如下图:

image

2.创建js代码

在script文件夹下创建MyJs.js文件,内容代码如下:

//经典代码 function sayHello() {     alert("Hello World!"); }

3.设置js文件为嵌入的资源

右键MyJs.js文件,选择属性,设置生成操作为:嵌入的资源.

image

4.创建类,用于注册js

创建类MyControl.cs,该类继承自Control,用于注册js.代码如下:

namespace JsLib {     public class MyControl : System.Web.UI.Control     {         protected override void OnPreRender(EventArgs e)         {             this.Page.ClientScript.RegisterClientScriptResource(typeof(MyControl), "JsLib.script.MyJs.js");             base.OnPreRender(e);         }     } }

5.在程序集中注册js文件

在当前程序集的AssemblyInfo下注册js文件,加入如下语句:

[assembly: System.Web.UI.WebResource("JsLib.script.MyJs.js", "application/x-javascript")]

至此,已经完成了在程序集中嵌入js资源.使用代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="TestConfig_Default2" %>  <%@ Register Assembly="JsLib" Namespace="JsLib" TagPrefix="cc1" %>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">     <title></title> </head> <body>     <form id="form1" runat="server">     <cc1:MyControl ID="MyControl1" runat="server">     </cc1:MyControl>         <script type="text/javascript">         window.attachEvent("onload", sayHello);     </script>     </form> </body> </html>

二、如何在程序集中嵌入图片

接上例,在程序集中建一个文件夹,命名为images,在image文件夹中放入一个图片1.jpg.接上例的第3步.

4.将图片设置为嵌入资源

5.在程序集中注册该图片文件

[assembly: System.Web.UI.WebResource("JsLib.images.1.jpg","img/jpeg")]

至此,完成了在程序集中嵌入图片资源,使用该资源代码如下:

<%--前台--%> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">     <title></title> </head> <body>     <form id="form1" runat="server">         <asp:Image runat="server" ID="img" />     </form> </body> </html>


//后台 protected void Page_Load(object sender, EventArgs e) {     string imgPath = Page.ClientScript.GetWebResourceUrl(typeof(JsLib.MyControl), "JsLib.images.1.jpg");     img.ImageUrl = imgPath; }

三、如何在程序集中嵌入css文件

接第一例,在程序集中建一个文件,命名为css,在css文件夹下建立一个css文件,命名为1.css,内容代码如下:

.txt {     background-color:Red; } 

接第一例第3步.

4.将1.css设置为"嵌入式资源"

5.在程序集中注册该css文件

[assembly: System.Web.UI.WebResource("JsLib.css.1.css", "application/css")]

至此,完成了在程序集中嵌入css资源,使用该资源代码如下:

<%--前台--%> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">     <title></title> </head> <body>     <form id="form1" runat="server">     <input type="text" id="txt1" class="txt" />     </form> </body> </html>
//后台 protected void Page_Load(object sender, EventArgs e) {     string cssPath = ClientScript.GetWebResourceUrl(typeof(JsLib.MyControl), "JsLib.css.1.css");      LiteralControl lc = new LiteralControl();     lc.Text = string.Format("<link href='{0}' rel='stylesheet' type='text/css' />", cssPath);      Page.Header.Controls.Add(lc); } 

小结:

1.设置资源文件为"嵌入式资源"

2.在assembly文件中注册该资源文件,注册时注意资源文件的mime类型

3.客户端引用资源文件时使用Page.ClientScript.GetWebResourceUrl来获取资源文件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值