• 在程序集中嵌入资源


    为什么要嵌入资源?

    我们可以在程序集中嵌入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来获取资源文件.

  • 相关阅读:
    curl库使用文件传输
    linux 命令
    第三方库交叉编译
    指针越界
    GetWindowRect GetClientRect
    libevent
    C#关闭窗体
    C# log日志窗口
    C++同一时刻仅允许一个实例,包含多用户的场景。
    C# 引用类型
  • 原文地址:https://www.cnblogs.com/oneword/p/1998390.html
Copyright © 2020-2023  润新知