Asp.net 主题 【1】

页面中默认的显示样式太朴素,一页一页的设置控件的显示样式效率又太低,主题和皮肤则提供了一种高效的设计方案。
 
一.添加主题
asp.net主题文件(css+.skin)的创建

asp.net主题文件(css+.skin)的创建

二.添加皮肤文件(.skin):
asp.net主题文件(css+.skin)的创建
在皮肤文件中添加如下代码
 
< asp:TreeView  runat="server"  ShowLines ="True"  ExpandDepth ="0">
        < NodeStyle  Font-Size="12px" ForeColor="blue" />
        < SelectedNodeStyle  BackColor="#0A246A" Font-Size="12px"  ForeColor="white" />
< /asp:TreeView >
 
asp.net主题文件(css+.skin)的创建

三.添加css文件(可选择.css)
在想要的主题的同一个文件夹下
asp.net主题文件(css+.skin)的创建

asp.net主题文件(css+.skin)的创建

 
body
{
FONT-SIZE: 12px;
MARGIN: 0px;
CURSOR: default;
FONT-FAMILY: Tahoma, Verdana;
background-color: #F2F2F2;
}
.commonText
{
    font-size: 12px;
}
.MsgText
{
font-size:12px;
color:Red;
}
.PromptText
{
font-size:16px;
color:#3795D2;
}
 
.BtnStyle
 {
  font-size :12px;
  text-decoration :none;
  background-color : #FFFFFF;
  border-style : groove
}
 
在与他同一文件夹.skin添加如下代码
 
  <asp:TreeView runat="server" ShowLines="True" ExpandDepth="0">
        <NodeStyle Font-Size="12px" ForeColor="blue" />
        <SelectedNodeStyle BackColor="#0A246A" Font-Size="12px"  ForeColor="white" />
</asp:TreeView>
 
<asp: Label  runat="server"  CssClass ="commonText"></asp:Label>
<asp: Label  runat="server"  CssClass ="MsgText"  SkinID ="MsgText"></asp:Label>
<asp: Label  runat="server"  CssClass ="PromptText"  SkinID ="PromptText"></asp:Label>
 
<asp:DropDownList runat="server"  CssClass=" commonText "></asp:DropDownList>
<asp:TextBox runat="server" CssClass="commonText"></asp:TextBox>
<asp: Button  runat="server" CssClass="BtnStyle" Width="65px" />
<asp: Button  runat="server" CssClass="BtnStyle" SkinID="NoWidthBtn" />
 
其中SkinID是我们分配的标签
 
这是主题文件就创建好了。
--------------------------------------------------------------------------------------------------------------

一、简介:

利用Themes我们可以很容易的更改控件、页面的风格,而不需要修改我们的代码和页面文件。Themes文件被单独的放在1个App_Themes文件夹下面,与你的程序是完全分开的。

二、怎么使用Themes和Skins:

  先看个非常简单的实例:

    App_Themes\default\1.skin文件代码:

    <asp:Label Font-Bold="true" ForeColor="Red" runat="server" />

  

    default.aspx:文件代码:

   <%@ Page Language="C#" Theme="default" %>
   <!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 id="Head1" runat="server">
   <title>Page with Example Theme Applied</title>
   </head>
   <body>
   <form id="form1" runat="server">
   <asp:Label ID="Label1" runat="server" Text="Hello 1" /><br />
   <asp:Label ID="Label2" runat="server" Text="Hello 2" /><br />
   </form>
   </body>
   </html>


  可以看到我们在default.aspx并没有写如何的控制style的代码,但运行取发现label上的字都变成了粗体红色了,这就是1个最基本的theme例子。

  

    App_Themes文件夹:

  App_Themes文件夹位于程序的根目录下,App_Themes下必须是Theme名称的子文件夹,子文件夹中可以包含多个.skin和.css文件。下图中建立2个Theme,名称分别为default和default2:

 

  使用themes

  

1、在1个页面中应用Theme:

  如果想在某1个页面中应用Theme,直接在aspx文件中修改<%@ Page Theme="..." %>,比如你想这个页面应用default2 theme,设置<%@ Page Theme="default2" %>就OK

  

2、在所有页面应用同1个Theme:

  如果要在所有页面上使用相同的Theme,在web.config中的<system.web>节点下加上句<pages theme="..."/>

  

3、让控件不应用Theme:

  第1个例子中我们看到了2个Label的风格都变了,就是说.skin文件中的风格在页面上所有Label都起作用了。但有时我们希望某1个Label不应用.skin中的风格,这时你只需设置Label的EnableTheming属性为false的时候就可以了。

也许你还想不同的label显示不同的风格,你只需设置label的SkinID属性就可以,见下面的实例:

 

App_Themes\default\1.skin

<asp:label runat="server" font-bold="true" forecolor="Red" />
<asp:label runat="server" SkinID="Blue" font-bold="true" forecolor="blue" />

 

deafult.aspx

<%@ Page Language="C#" Theme="default" %>
<!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 id="Head1" runat="server">
 <title>Page with Example Theme Applied</title>
</head>
<body>
 <form id="form1" runat="server">
 <asp:Label ID="Label2" runat="server" Text="Hello 2" SkinID="Blue" /><br />
 <asp:Label ID="Label3" runat="server" Text="Hello 3" /><br />
 </form>
</body>
</html>

  运行后就会发现2个label显示的风格不一样了。

  

4、其他方法:

  前面已经说了在aspx文件头使用 <%@ Page Theme="..." %>来使用theme,而用这个方法应用theme中的风格将会覆盖你写在aspx中的控件属性style。比如:

  

App_Themes\default\1.skin

<asp:Label Font-Bold="true" ForeColor="Red" runat="server" />

  

default.aspx

<%@ Page Language="C#" Theme="default" %>
<!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 id="Head1" runat="server">
</head>
<body>
 <form id="form1" runat="server">
 <asp:Label ID="Label1" runat="server" Text="Hello 1" /><br />
 <asp:Label ID="Label2" runat="server" Text="Hello 2" ForeColor="blue" />
 </form>
</body>
</html>

  运行结果,所有的label的forecolor都为red。

  

而使用<%@ Page StyleSheetTheme="..." %>应用theme就不会覆盖你在aspx文件中写的属性style:

  控件应用style属性的顺序如下:

  a、StyleSheetTheme引用的风格

  b、代码设定的控件属性(覆盖StyleSheetTheme)

  c、Theme引用的风格(覆盖前面2个)

  

theme中包含CSS:

  theme中也可以使用.css文件,当你把.css文件放在1个theme目录下后,在用到了这个theme的页面中自动会应用你的.css的

  

三、后台代码轻松为网站换府肤

  前面讲的都是在aspx文件或web.config中应用theme,而在blog这样的每个用户都有不同的skin的网站中用上面的方法来实现换skin显然是不方便的。

  下面就介绍怎么在后台代码中动态的引用theme来解决上面的情况,theme必须在page被请求的最早期就应用上,所以我们必须在Page_PreInit事件中写代码,代码很简单,就1句:

Page.Theme = "...";

  这里我们只要从数据库中去读取每个用户设置的不同theme名就可以轻松实现每个用户都有不同的skin了。

 

在哪里添加Page_PreInit事件?

 

一.在页面的cs类当中写 override vs会智能提示重写OnPreInit
C# code

    protected override void OnPreInit(EventArgs e)
    {
        this.Page.Theme = "blue";
    }

 

二.手动写入代码
protected override void OnPreInit(EventArgs e)
{
      this.Page.Theme = "blue";
}

 

转载于:https://www.cnblogs.com/aiqingqing/p/4513203.html

C#,读做 "C sharp",中文译音暂时没有,非专业人士一般读"C井",专业人士一般读"C sharp"。   C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。 C# 并且C#成为ECMA与ISO标准规范。C#看似基于C++写成,但又融入其它语言如Pascal、Java、VB等。   微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说struts),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:"这是对Java的反击."   C#更像Java一些,虽然微软在这个问题上保持沉默.这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高.   Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用Java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话).C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就像已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样,"我发现所有这些都是渐进的.如果C#不存在,我们总能回到Java或C和C++.这些都不完全是新技术;它们在更大的意义上来说只是大公司制造的市场噱头.我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值