随笔 - 86  文章 - 0  评论 - 737  阅读 - 18万

『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件

 代码:

复制代码
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DemoWebControl
{
    /// <summary>
    /// 自己的Asp.Net服务器组件 Image:输出内嵌的在程序集中的 图片资源
    /// </summary>
    public class DemoImage : WebControl
    {
        protected bool IsDesignMode
        {
            get { return DesignMode || HttpContext.Current == null || Page == null; }
        }
        public DemoEnumImage DemoEnumImage { get; set; }

        //通过用户在 属性中的设置,将内嵌的图片 作为 IMG标签 输出到 页面
        protected override void Render(HtmlTextWriter output)
        {
            string imageUrl = string.Empty;
            if (Page!=null)
            {
                if(DemoEnumImage==DemoEnumImage.Image01)
                    imageUrl = Page.ClientScript.GetWebResourceUrl(GetType(), 
                                @"DemoWebControl.Resources.DemoImage01.jpg");
                else if (DemoEnumImage == DemoEnumImage.Image02)
                    imageUrl = Page.ClientScript.GetWebResourceUrl(GetType(), 
                                @"DemoWebControl.Resources.DemoImage02.jpg");
                else if (DemoEnumImage == DemoEnumImage.Image03)
                    imageUrl = Page.ClientScript.GetWebResourceUrl(GetType(), 
                                @"DemoWebControl.Resources.DemoImage03.jpg");
            }

            output.Write("<image id=\"" + ClientID + "\" name=\"" + ClientID + 
                "\" class=\"" + CssClass + "\" src=\"" + imageUrl + "\" />");
        }
    }

    [Serializable]
    public enum DemoEnumImage { Image01, Image02, Image03, }
}
复制代码

 

复制代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DemoImagePage.aspx.cs" 

Inherits="AspNetDemo.DemoImagePage" %>
<%@ Register assembly="DemoWebControl" namespace="DemoWebControl" tagprefix="Demo" %>

<!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">
    <style type="text/css">
        .Demo{ border: 1px solid RED; }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        
        <Demo:DemoImage ID="DemoImage1" DemoEnumImage="Image03" CssClass="Demo" runat="server" />

    </div>
    </form>
</body>
</html>
复制代码

 

嵌入资源:

 

运行截图:

 

相关技术点:

  • 将一个图片资源 内嵌到 程序集中,需要设置 文件VS属性(生成操作:签入的资源);
  • 程序集项目 AssemblyInfo.cs 中需要加入如下代码(其中 WebResource 包括 资源名称,资源类型):
  • 复制代码
    // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
    // 方法是按如下所示使用“*”:
    // [assembly: AssemblyVersion("1.0.*")]
    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyFileVersion("1.0.0.0")]
    
    //此标识 可以让 拖拽的控件 自动以 Demo 作为 tagprefix 属性,比如:
    //<%@ Register assembly="DemoWebControl" namespace="DemoWebControl" tagprefix="Demo" %>
    [assembly: TagPrefix("DemoWebControl", "Demo")]
    
    [assembly: WebResource("DemoWebControl.Resources.DemoImage01.jpg", "image/jpeg")]
    [assembly: WebResource("DemoWebControl.Resources.DemoImage02.jpg", "image/jpeg")]
    [assembly: WebResource("DemoWebControl.Resources.DemoImage03.jpg", "image/jpeg")]
    
    [assembly: WebResource("DemoWebControl.Resources.DemoCss01.css", "text/css")]
    [assembly: WebResource("DemoWebControl.Resources.DemoJs01.js", "text/javascript")]
    复制代码
  • 获取 程序集中的 内嵌文件的 Url代码是:Page.ClientScript.GetWebResourceUrl(GetType(), @"资源名称");

 

 相关系列文章链接:

 

 

posted on   InkFx  阅读(543)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示