代码:

<span style="font-family:Microsoft YaHei; font-size:12px">using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls; namespace DemoWebControl
{
/// <summary>
/// 自己的Asp.Net服务器组件 一个DIV控件:拖拽控件之后,自动输出 需要的 CSS到界面
/// </summary>
public class DemoCssCtrl : WebControl
{
protected bool IsDesignMode
{
get { return DesignMode || HttpContext.Current == null || Page == null; }
}
public string Text { get; set; }
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e); //输出 CSS 到 HTML文件的头部标签中
if (!IsDesignMode)
{
HtmlLink linkCss = new HtmlLink();
linkCss.Attributes.Add("type", "text/css");
linkCss.Attributes.Add("rel", "stylesheet");
linkCss.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl(GetType(),
"DemoWebControl.Resources.DemoCss01.css"));
Page.Header.Controls.Add(linkCss);
}
}
//两个 嵌套的 DIV,内嵌CSS资源文件,拖拽控件即可实现 HTML 和 CSS文件 都输出到页面
protected override void Render(HtmlTextWriter output)
{
output.Write("<div id=\"" + ClientID + "\" name=\"" +
ClientID + "\" class=\"OuterDiv\">\r\n");
output.Write("<div class=\"InnerDiv\">");
output.Write(Text);
output.Write("</div>\r\n");
output.Write("</div>\r\n");
}
} }
</span>
<span style="font-family:Microsoft YaHei; font-size:12px"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DemoCssPage.aspx.cs"
Inherits="AspNetDemo.DemoCssPage" %>
<%@ 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">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div> <Demo:DemoCssCtrl ID="DemoCss1" Text="两个DIV嵌套" runat="server" /> </div>
</form>
</body>
</html>
</span>

嵌入资源:



嵌入css代码:

<span style="font-family:Microsoft YaHei; font-size:12px">.OuterDiv{ border: 1px solid RED;background-color: Blue; float: inherit; width:200px; height:150px; }
.InnerDiv
{
border: 1px solid Yellow;
/*内嵌CSS无法指定具体路径的 图片,所以需要将 图片的字节流转成 Base64 编码 内嵌到 CSS文件中*/
background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEASABIAAD/4Qn/wD/2Q==');
float: inherit; width:140px; height:80px; margin: 35px 30px 35px 30px;color: White;
font-family: 微软雅黑; text-align: center;
} </span>

运行截图:



相关技术点:

将一个CSS文件 内嵌到 程序集中,需要设置 文件VS属性(生成操作:签入的资源);

程序集项目 AssemblyInfo.cs 中需要加入如下代码(其中 WebResource 包括 资源名称,资源类型):

<span style="font-family:Microsoft YaHei; font-size:12px">// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [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")]</span>

获取 程序集中的 内嵌文件的 Url代码是:Page.ClientScript.GetWebResourceUrl(GetType(), @”资源名称”);

将CSS文件设置到 HTML的 链接到头部:

<span style="font-family:Microsoft YaHei; font-size:12px">protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
//输出 CSS 到 HTML文件的头部标签中
if (!IsDesignMode)
{
HtmlLink linkCss = new HtmlLink();
linkCss.Attributes.Add("type", "text/css");
linkCss.Attributes.Add("rel", "stylesheet");
linkCss.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl(GetType(),
"DemoWebControl.Resources.DemoCss01.css"));
Page.Header.Controls.Add(linkCss);
}
}</span>

『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中的更多相关文章

  1. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来

    代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

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

    代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

  3. 『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势

    在写<Asp.Net 服务器组件系列文档>之前,笔者不才,揣测微软战略用意: 微软利益诉求莫过于 微软产品和技术的市场份额: 因此,微软战略之一莫过于将 所有开发人员 团聚在 微软周围,以 ...

  4. Spring Boot 揭秘与实战(五) 服务器篇 - 内嵌的服务器 Tomcat剖析

    文章目录 1. 内嵌的 Tomcat,一个Jar包运行 2. 如何定制内嵌 Tomcat3. War 包部署的使用细节 2.1. 设置内嵌Tomcat的端口 2.2. 设置内嵌Tomcat的最大线程数 ...

  5. 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件

    代码: using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DemoWebControl ...

  6. 转:无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

    今天看到一篇文章感觉不错,收藏转载下. 原文地址:http://blog.csdn.net/sntyy/article/details/2090347 版权为原作者所有 无法向会话状态服务器发出会话状 ...

  7. Tomcat中的服务器组件和 服务组件

    开始学习Tocmat时,都是学习如何通过实例化一个连接器 和 容器 来获得一个Servlet容器,并将连接器  和 servlet容器相互关联,但是之前学习的都只有一个连接器可以使用,该连接器服务80 ...

  8. MySQL 8 服务器组件

    MySQL 服务器包含了一个基于组件的架构,用于扩展服务器功能.服务器和其他组件可以使用组件提供的服务.(在使用服务方面,服务器也是一个组件,等同于其他组件).组件之间交互仅通过他们各自提供的服务. ...

  9. Spring Boot 揭秘与实战(五) 服务器篇 - 其他内嵌服务器 发表于 2017-01-03 | Spring框架 | Spri

    文章目录 1. Jetty 的切换 2. Undertow的使用 Spring Boot 可选择内嵌 Tomcat.Jetty 和 Undertow,因此我们不需要以 war 包形式部署项目.< ...

随机推荐

  1. EL标签库

    首先要导入jar包 jst1.jar   standard.jar 在页面中引入标签库 <%@taglib uri="..." prefix=".."%& ...

  2. Ceph Newstore存储引擎介绍

    在Ceph被越来越多地应用于各项存储业务过程中,其性能及调优策略也成为用户密切关注讨论的话题,影响性能表现关键因素之一即OSD存储引擎实现:Ceph基础组件RADOS是强一致.对象存储系统,其OSD底 ...

  3. 优雅的实现Activiti动态调整流程(自由跳转、前进、后退、分裂、前加签、后加签等),含范例代码!

    最近对Activiti做了一些深入的研究,对Activiti的流程机制有了些理解,对动态调整流程也有了一些实践方法. 现在好好总结一下,一来是对这段时间自己辛苦探索的一个记录,二来也是为后来者指指路~ ...

  4. sql 中条件in参数问题

    经常遇到条件为in的模糊查询,sql传参可以在service中直接传递参数,不必使用占位符 select * from ud_order where status in ("+status+ ...

  5. 编码神器之sublime(插件安装)

    一款优秀的编辑器是程序员的左膀右臂,相信每一个程序员手边都有自己熟悉的编辑器. 从一开始使用sublime的时候就开始喜欢上了这款编辑器,被他强大的功能深深的吸引了. sublime的强大来源于他的扩 ...

  6. jsp(一) : servlet基础

    1.客户  servlet容器   servlet 2.实现接口     #1.接口:servlet :             constrontor .init().service.destroy ...

  7. win10 删除资源管理器中的6个文件夹

    细心的朋友会发现,在Win10此电脑(计算机)中,除了我们最熟悉的磁盘外,还新增了视频.图片.文档.下载.音乐.桌面这6个文件夹.不少网友举觉得这6个文件夹其实并没什么用,想要去除删掉.那么Win10 ...

  8. JavaScript学习笔记(8)——JavaScript语法之运算符

    一. 算术运算符: 运算符 描述 例子 结果 + 加 x=y+2 x=7 - 减 x=y-2 x=3 * 乘 x=y*2 x=10 / 除 x=y/2 x=2.5 % 求余数 (保留整数) x=y%2 ...

  9. jquery之each

    $.each()与$(selector).each()不同, 后者专用于jquery对象的遍历, 前者可用于遍历任何的集合(无论是数组或对象),如果是数组,回调函数每次传入数组的索引和对应的值(值亦可 ...

  10. ZOJ 2625 Rearrange Them(DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1625 题目大意:将n个数重新排列,使得每个数的前一个数都不能和之前的 ...