.Net 2005 中通过MasterPage来更方便实现网站模板替换

前面曾在.net2003下做一个blog,由于也是要用到模板技术。多方查找,找了一个第三方自己实现的MasterPage组件来实现对每天blog用户模板更换的实现。不过,比使用,实现方面还是比较订烦的。制作一个新的模块必须有程序员的大量参于。

在MS发布.net2005 之后,它已提供了一个完整的,可以方便应用的MasterPage解决方案。用它就可以轻松实现网站模板的定制及自由更换。前阵子了解了点,更好今天下午有点空闲时间,简单试了一把。拿出来和大家分享下吧,完后有更进一步了解后再继续分享。

1、定制模板。

可以先在网站建一Skins目录,这样将所有的模板都统一放在它之下。

接着添加模板,在该目录下添加新项:Master.Page。命名为:<指定名字>.master。创建之后会发现它和新建的一个ASPX页面没什么太多区别。所以也应可以通过制作普通页面的方面来设计它。只不过,对于需要在不同场合由于不同内容来替换的地方用:Contentplaceholder组件来定义就行。这样,一个模板就制作好了。完成后的代码如:

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

<!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>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        &nbsp;<table border="1" bordercolor="#ffcc66" cellpadding="0" cellspacing="0" style="width: 606px">
            <tr>
                <td colspan="3" style="height: 234px">
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
                    </asp:ContentPlaceHolder>
                    dsfsdaf</td>
                <td style="width: 4px">
                </td>
                <td>
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder4" runat="server">
                        sdfdsafasd122</asp:ContentPlaceHolder>
                    sdfsdadsafsd</td>
            </tr>
            <tr>
                <td>
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder3" runat="server">
                    </asp:ContentPlaceHolder>
                </td>
                <td style="width: 4px">
                </td>
                <td>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

2、使用模板。

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

完后在该面页中通过<asp:Content>来定义及实现每一块的在模板中通过Contentplaceholder已定义的区域。如:

<asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

        <asp:Panel ID="Panel3" runat="server" Height="50px" Width="125px">
            <asp:DropDownList name="dfgddf" ID="DropDownList1" runat="server">
            </asp:DropDownList></asp:Panel>
   
        <asp:Panel ID="Panel4" runat="server" Height="50px" Width="125px">
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        </asp:Panel>
   
</asp:Content>

完后,再在Page_PreInit中加载需要用的模板。如:

   protected void Page_PreInit(object sender, EventArgs e)
    {
        this.MasterPageFile = "Skins/Skin2.master";//实际使用时,可以在别处先设定模板,完后该处读取指定的模板,当然这个处理就可以多种多样了。
    }

大概就先写这么多。要忙了。改天看看如何再将webpart也结合进来。

posted on 2006-06-03 19:49  自由.Net  阅读(1357)  评论(3编辑  收藏  举报