[ASP.NET学习笔记之十二]ASP.NET 2.0中Theme、MasterPage和代码国际化

ASP.NET2.0Theme(主题)

使用主题

定义的主题样式后缀为skin

指定主题
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  Theme="myTheme"%>
在这个页面编辑模式时的控件样式未发生变化,浏览的时候就会发生变化,这个是典型的例子。对于我这样不懂美化界面的人才说,定义样式还是比较难的,因为在编辑模式当中无法直接预览样式。可以把Theme换成StylesheetTheme属性, 这样就可以直接在编辑模式中显示结果样式了。这里存在着样式修改的优先级.定义StylesheetTheme属性的话,可以在页面上再次修改样式.Theme优先级别最高。结果都是一样的

使用themes

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

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

 

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

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

3、让控件不应用Theme:

   有时我们不希望应用.skin中的风格,这时你只需设置控件的EnableTheming属性为false的时候就可以了。

 

另外要注意的是定义了Theme,页面的属性设置会失效。要页面属性生效。需要使用StylesheetTheme代替Theme。如下代码所示

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  StylesheetTheme="myTheme"%>

除此之外,我们还可以通过代码访问Theme。注意Page.Theme一定要在Page_PreInit事件之中或者之前定义,代码如下:

protected void Page_PreInit()

{

    Page.Theme = Server.HtmlEncode("myTheme");

}

 

还可以指定空间使用特性的样式
比如两个IMG控件,指定两个不同的图片,需指定SkinID属性

<asp:ImageButton ID="ImageButton1" runat="server" SkinID="OKButton" />

<asp:ImageButton ID="ImageButton2" runat="server" SkinID="CancelButton" />

 

不使用主题,使用CSS来改变

使用Style

void Page_Load(Object sender, EventArgs e)

{

    Style myStyle = new Style();

 

    myStyle.BackColor = Color.Yellow;

    myStyle.ForeColor = Color.Green;

    myStyle.BorderStyle = BorderStyle.Dashed;

    myStyle.BorderWidth = new Unit(4);

 

    txtTextBox1.ApplyStyle( myStyle );

    txtTextBox2.ApplyStyle( myStyle );

    txtTextBox3.MergeStyle( myStyle );

}

添加样式表

<%@ Page Language="C#" %>

 

<script runat="Server">

 

void lbtnScript_Click(object s, EventArgs e)

{

    myLabel.CssClass = "myClass1";

}

 

void lbtnVerdana_Click(object s, EventArgs e)

{

    myLabel.CssClass = "myClass2";

}

 

</script>

 

<html>

<head>

 <style>

 

.myClass1

{

 font: 18pt script;

 color: blue;

}

 

.myClass2

{

 font: 24pt verdana;

 color: red;

}

 

</style>

<title>CssClassDynamic.aspx</title>

</head>

<body>

<form id="Form1" runat="Server">

    <asp:Label ID="myLabel" Text="Here is some text!" runat="Server" />

    <hr>

    <asp:LinkButton ID="lbtnScript" Text="Show Script!" OnClick="lbtnScript_Click" runat="Server" />

    <asp:LinkButton ID="lbtnVerdana" Text="Show Verdana!" OnClick="lbtnVerdana_Click" runat="Server" />

</form>

</body>

</html>

 

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

aStyleSheetTheme引用的风格

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

cTheme引用的风格(覆盖前面2)

ASP.NET2.0MasterPage

在网上看到一段关于MasterPageaspx页面的区别

You create a Master Page in pretty much the same way as you create a normal ASP.NET page. A Master Page can contain the same Web controls, User controls, HTML content, and scripts that you would add to a standard ASP.NET page. There are three important differences between a Master Page and a normal ASP.NET page.

First, unlike a normal ASP.NET page, the name of a Master Page must end with the special extension .master. This extension marks the page as a Master Page. Furthermore, an ASP.NET application is configured so that you cannot request pages with the .master extension. It doesn't make sense to request a Master Page directly. Instead, you request content pages based on the Master Page.

Second, a Master Page includes a <%@ Master %> directive instead of the normal <%@ Page %> directive. The <%@ Master %> directive supports many of the same attributes as the <%@ Page %> directive. For example, you can specify the programming language of the page with the directive <%@ Master Language="vb" %>.

The final difference between a Master Page and a normal ASP.NET page is that a Master Page can contain zero or more ContentPlaceHolder controls. A ContentPlaceHolder control can be used only within a Master Page. This control marks an area of a Master Page that can be overridden by a particular content page.[引用地址]

 

类似Theme的应用方式,我们做一个简单的例子,对于需要在不同场合由于不同内容来替换的地方用:ContentPlaceHolder组件来定义就行。这样,一个模板就制作好了。

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="myMasterPage.master.cs" Inherits="myMasterPage" %>

 

<!DOCTYPE html PUBLIC "-//W 3C //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>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">     

        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>

    </form>

</body>

</html>

下面建立一个你要显示内容的ASPX页面。将里面的所有html元素全清掉。注意保留下:
<%@ Page Language="C#" MasterPageFile="~/myMasterPage.master" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

或者是在Page_PreInit事件添加Master

protected void Page_PreInit(object sender, EventArgs e)

{

    this.MasterPageFile = "~/myMasterPage.master";

}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值