在程序集中嵌入资源

为什么要嵌入资源?

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

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

一、如何在程序集中嵌入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来获取资源文件.

转载于:https://www.cnblogs.com/oneword/archive/2011/03/29/1998390.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值