惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Martin Fowler
Martin Fowler
I
InfoQ
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
爱范儿
爱范儿
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
B
Blog
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
V
Visual Studio Blog

博客园 - javalong

.Net程序如何防止被注入(整站通用) 不走寻常路 设计ASP.NET应用程序的七大绝招 进制转换(一) 关于ISA2004内网卡网线拔插造成ISA代理失效问题的一种解决方法(下列错误而失败:0x80072 关于三层结构的一点使用心得与开发建议 さくら~歌詞 いきものがかり SAKURA 歌词 修改数据库逻辑名 Windows 2003 R2 一些SN map blog - javalong - 博客园 VB.Net to C# Converter 1.51 图书馆 2006年宜结婚嫁娶黄道吉日通用表 VS2005 发布网站 真的好麻烦!!! 关于URL重写使用正则表达式的一些问题! 使用 ASP.NET 2.0 ObjectDataSource 控件 12月16日参加了传说中的微软新产品发布会!----广州 工厂的资料 数据访问 SimplePager
VS2005 中通过MasterPage来更方便实现网站模板替换
javalong · 2006-12-24 · via 博客园 - javalong

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