MasterPage的应用

MasterPage的应用

作者:浩子

出自:http://www.xygu.com

数据库设计好了,下面我们就来定义网站的外观。
看了一些的.NET 2.0的介绍,基本上都会先提到一个新的东东:MasterPage,原因是什么呢?因为...他的确是个好东东^_^

有一定网络开发经验的兄弟一定都有这样的经验:一个网站,经常很多页面都有很多相同的部分,维护这样的东西的确需要一个好的方法,不然就会出现更新的难题了。以前ASP的年代,好像都是将要共用的部分用到一个共用的文件中,在使用的时候include进来;ASP.NET 2003的时候呢,不知大家怎么用,我反正是用自定义控件的方式来处理,感觉也还可以,但是也还是感觉有所缺陷,在编辑的时候也不那么客观。总在想,如果能结合Dreamweaver的模板功能就好了。

现在好了,MasterPage出来了,这些问题就都解决了。

下面我们就本系统的外观设计做一个介绍(我的主要目的是学习,因此,结构的合理性并不是重点,因此,可能在书写的过程中会把这个系统

“不合理”的安排一些东西)。

我已经新建了一个项目:oursnet2005,目前还没有添加任何文件,下面我们先添加一个Master文件吧。



这样,我们就新建了一个以master为后缀的新文件了,如下图:


从上面我们可以看出,这个文件很像我们平常的ASP.NET的文件,只是加了个Master打头,中间加了个ContentPlaceHolder控件罢了,实际上这就是Master页的功效所在,ContentPlaceHolder是一个占位符,它之外的部分是用来定义相同部分的,而ContentPlaceHolder中间的部分则可以在不同的页中有不同的体现。
下面,我就为oursnet定义一个母版页,
代码如下:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <style type="text/css">
<!--FF8c00
A:link {COLOR: #FFFFFF; TEXT-DECORATION: none}
A:visited {COLOR: #FFFFFF; TEXT-DECORATION: none}
A:active {COLOR: #FFFFFF; TEXT-DECORATION: none}
A:hover {COLOR: #FF8c00; TEXT-DECORATION: none}
-->
</style>
</head>
<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
    <form id="form1" runat="server">
        <div>
            <table border="0" cellspacing="0" cellpadding="0" style="width: 100%" background="images/backg.gif">
                <tr>
                    <td style="height: 60px">
                        <font color="white">&nbsp;Our''''''''''''''''s NET,我们的网络,我们的.NET<br />
                            &nbsp;&nbsp;http://www.oursnet.net<;/font></td>
                </tr>
                <tr>
                    <td style="height: 18px">
                        <font style="font-size:9pt">
                        &nbsp;&nbsp;&nbsp;&nbsp;
                        <a href="Default.aspx">首页</a>&nbsp;&nbsp;|&nbsp;&nbsp;
                        <a href="Default.aspx">Visual Basic 2005</a>&nbsp;&nbsp;|&nbsp;&nbsp;
                        <a href="Default.aspx">Visual C# 2005</a>&nbsp;&nbsp;|&nbsp;&nbsp;
                        <a href="Default.aspx">Visual C++ 2005</a>&nbsp;&nbsp;|&nbsp;&nbsp;
                        <a href="Default.aspx">Visual Web Developer 2005</a>&nbsp;&nbsp;|&nbsp;&nbsp;
                        <a href="Default.aspx">关于</a>&nbsp;&nbsp;|&nbsp;&nbsp;
                        </font></td>
                    </tr>
            </table>
            <br>
            <br>
            <table border="0" cellspacing="0" cellpadding="0" style="width: 100%">
                <tr>
                    <td width="180">
                    </td>
                    <td width="15">
                    </td>
                    <td bgcolor="#CCCCCC" width="1">
                    </td>
                    <td width="20">
                    </td>
                    <td>
                        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                        </asp:ContentPlaceHolder>
                    </td>
                </tr>
            </table>
            <br>
            &nbsp;</div>
    </form>
</body>
</html>
下面具体演示一下如何使用这个母版页,添加一个Default.aspx,在添加的时候选择标记要选择母版页,然后在提示中选择我们刚做好的母版页,这样Default.aspx就变成这个样子了:

查一下源代码,居然什么也没有,只有一个Content控件,这就是我们真正要在此页写内容的地方了,随便写上几行,运行,效果就出来了,如下图所示:


这个家伙,真是不错,以后我们再不要为网络中这类问题烦了,休息一会,然后继续下去。

[此贴子已经被作者于2005-12-20 22:56:46编辑过]
ip地址已设置保密
2005-12-20 22:55:04
浩子
帅哥哟,离线,有人找我吗?
<script language="javascript" type="text/javascript">document.write (astro(''));</script>
等级:版主
文章:43
积分:600
门派:无门无派
注册:2005年12月18日
2
  用支付宝给浩子付款或购买其商品,支付宝交易免手续费、安全、快捷! QQ 点击这里发送电子邮件给浩子

发贴心情

(这一部分,我主要是参考了微软的讲座列出来的,感觉是些重点,所以在此记录下来)

从上面的最后结果中我们可以看到,Default.aspx的页面标题是:Untitled Page,这是沿用的原来的母版页中的标题,我们可不可以为不同的页定义不同的标题呢?当然是可以的,微软的设计人员再就为我们考虑好了,只要在相应页的Page属性中直接加入Title属性即可,如我们加入:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Title="Our's NET" %>
我们再刷新一下,就可以看到,标题已经变为了"Ours's NET"了~!

如果我们有很多页,是不是每页都要定义MasterPageFile呢,其实不用的,我们可以通过在配置文件中加入相应的配置来实现,如下:

在此,一定要注意,XML文件是区分大小写的@!

在实际使用的时候,我们可能会遇到这样的问题:我能不能在应用页中修改母版页中的内容呢?
方法有两种,我们通过实例来说明一下。
我们先在母版页中添加一个新的Label控件,效果如下:


我希望在default.aspx中,让这个标签变为:"Welcome to Our's net",方法如下:
1、在Default.aspx的Load中加入:
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ((Label)Master.FindControl("Label1")).Text = "Welcome to Our's net";
    }
}

2、在母版页中加入属性newTitlepublic partial class MasterPage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public string NewTitle
    {
        get { return Label1.Text; }
        set { Label1.Text = value; }
    }

}

然后在Default.aspx的Load中加入:
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        MasterPage myMP = (MasterPage)Page.Master;
        myMP.NewTitle = "Welcome to Our's net!";
    }
}
这样,我们就得到了我们想要的结果:


就到这里吧,如果有新的见识再列出来吧:P

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值