Asp.net 主题 【1】

页面中默认的显示样式太朴素,一页一页的设置控件的显示样式效率又太低,主题和皮肤则提供了一种高效的设计方案。

一.添加主题

二.添加皮肤文件(.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>

三.添加css文件(可选择.css)

在想要的主题的同一个文件夹下

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";
}

时间: 2024-12-18 20:08:17

Asp.net 主题 【1】的相关文章

Asp.net 主题

设定主题: 右击网站,选择添加ASP.NET文件夹,选择主题.系统默认将文件夹命名为App_Themes,我们在这个文件夹下添加外观文件,在.skin后缀的文件中自定义我们想要的主题. 例如: <%-- 2.默认外观.未定义SkinId.在同一主题中每个控件类型只允许有一个默认的控件外观.--%> <asp:Imagerunat="server"ImageUrl="~/images/image1.jpg"/> <asp:Buttonru

Asp.net 主题 【2】

通常我们经常看到网页,一些软件提供换肤功能,各种主题间切换.ASP.NET 2.0 中可以用Theme和skin以及CSS轻松实现这个功能. 首先简单介绍一下三种技术:主题(Theme)技术,面板(skin)技术,级联样式表(css) 主题(Theme)以及面板(skin)技术这两个技术允许开发人员或设计人员自行定义网页的样式设置以及套用的样式支持,每个主题中可以包含数个面板档,这些面板档决定了控件要输出时套用的样式,开发人员则可以利用主题来决定不同的外观要使用的样式. 级联样式表(css)它是

Asp.net主题(theme)和皮肤(skin)的使用

asp.net 的服务器端控件提供了多种样式的设计,如果对每个控件都单独设置,是比较繁琐的事情,所以微软也提供了针对这些服务器端控件的样式管理,其实也可以通过 css来控制部分服务器端控件的样式,比如textbox,如果用普css就是对input进行样式控制,但对于gridview或者日历控件等,css 文件无法灵活的控制,这就需要微软专门为服务器端控件提供的主题和皮肤. 主题和皮肤的使用方法:  1.新建外观文件(*.skin),然后在文件里设定服务器端控件的样式 2.在aspx页面的Page

ASP.NET(转自wiki)

ASP.NET是由微软在.NET Framework框架中所提供,开发Web应用程序的类库,封装在System.Web.dll文件中,显露出System.Web名字空间,并提供ASP.NET网页处理.扩充以及HTTP通道的应用程序与通信处理等工作,以及Web Service的基础架构.ASP.NET是ASP技术的后继者,但它的发展性要比ASP技术要强大许多. ASP.NET可以运行在安装了.NET Framework的IIS服务器上,若要在非微软的平台上运行,则需要使用Mono平台[2],ASP

ASP.NET应用程序和ASP.NET网站所共有的文件: App_Browsers 等

App_Browsers 包含 ASP.NET 用于标识个别浏览器并确定其功能的浏览器定义 (.browser) 文件.有关更多信息,请参见浏览器定义文件架构(browsers 元素)和如何:在 ASP.NET 网页中检测浏览器类型. App_Data 包含应用程序数据文件,包括 MDF 文件.XML 文件和其他数据存储文件.ASP.NET 2.0 使用 App_Data 文件夹来存储应用程序的本地数据库,该数据库可用于维护成员资格和角色信息.有关更多信息,请参见成员资格简介和了解角色管理. A

MVC框架 - 高级示例

在第一个MVC教程章中,我们学会了如何在MVC控制器和视图进行交互.在本教程中,我们将向前更进一步,学习如何使用模型创建高级应用程序来创建,编辑,删除用户,在我们的应用程序中查看列表. 下面是用来创建高级MVC应用程序的步骤 第1步:选择 File->New->Project->ASP.NET MVC Web应用. 并命名为:AdvancedMVCApplication. 单击确定.在接下来的窗口中,选择模板作为互联网应用程序和视图引擎为Razor.注意,我们这个时候使用的是模板,而不是

SaaS系列介绍之十五: SaaS知识重用

1 建立并积累自己的开发体系 遵行业界的规定又有自己的特色是我们所追求的目标.成功的软件公司都有丰富而可复用的代码组件,几行代码在单个系统里可能无足轻重,但一旦可在大量的系统中可重复使用那就是价值不菲了.做单个项目不一定获利,但用前面的项目经验与代码改造成新项目的成本就少多了.所以,软件业一定要建立起自己的知识库并不断地积累,那将是取之不尽的财富. 2 建立可重用性的知识库 l 充分利用开发模板 利用我们自己开发的模板组装我们一般的页面,极大的减少了页面设计代码和开发代码,提高开发效率. 此模板

软工学习记4

随着学习的进程越走越远,我们的团队也更加确定.在人员分工.开发项目方面都做出了明确的规划.有了个目标,我们便不是那么迷茫,困惑着去学习,学习了这么久到底能干什么?这个问题很关键.我和我的队友们也达成了共识,决定尝试着去做一下一个基ASP动态网页开发技术的二手书贩卖系统.我们的分工也十分明确. 牟得力主要负责总体的规划,也就是我们的小领导.钱政捷主要负责数据库的建立和对接,杨子琪版式设计后期处理美化,我呢,就是开发ASP网页主题的构建咯. 对于一群对编程并不太擅长的学渣来说,一个有着太复杂功能的系

大家好

http://www.yugaopian.com/people/259723 http://www.yugaopian.com/people/259744 http://www.yugaopian.com/people/259783 http://www.yugaopian.com/people/259824 http://www.yugaopian.com/people/259839 http://www.yugaopian.com/people/259933 http://www.yugao