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

Posted on 2006-12-24 11:26  javalong  阅读(815)  评论(1编辑  收藏  举报

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";//实际使用时,可以在别处先设定模板,完后该处读取指定的模板,当然这个处理就可以多种多样了。
    }

Copyright © 2024 javalong
Powered by .NET 8.0 on Kubernetes