【发布时间】:2010-10-20 14:55:27
【问题描述】:
这是一个非常简单的 ASP.NET 母版页示例。母版页显示 4 个超链接并具有两个 ContentPlaceholder 控件。前两个链接指向将显示在 ContentPlaceHolder1 中的内容页面,后两个链接指向将显示在 ContentPlaceHolder2 中的内容页面。
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="ProofOfConcept.Site1" %>
<!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></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>
Demo site
</h1>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/HeadContent1.aspx">Head Content 1 in ContentPlaceHolder1</asp:HyperLink>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/HeadContent2.aspx">Head Content 2 in ContentPlaceHolder1</asp:HyperLink>
<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="~/MainContent1.aspx">Main Content 1 in ContentPlaceHolder2</asp:HyperLink>
<asp:HyperLink ID="HyperLink4" runat="server" NavigateUrl="~/MainContent2.aspx">Main Content 2 in ContentPlaceHolder2</asp:HyperLink>
<br />
<div style="border: 1px dotted blue;">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
This is default text for ContentPlaceholder1
</asp:ContentPlaceHolder>
</div>
<br />
<div style="border: 1px dotted red;">
<asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
This is default text for ContentPlaceholder2
</asp:ContentPlaceHolder>
</div>
</div>
</form>
</body>
</html>
四个内容页面本身都是这样的:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.master" AutoEventWireup="true" CodeBehind="MainContent1.aspx.cs" Inherits="ProofOfConcept.MainContent1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceholder2" runat="server">
This is text from MainContent1 in ContentPlaceholder2
</asp:Content>
...适当地设置 ContentPlaceholder ID。换句话说,每个内容页面只包含一个内容控件,该控件链接到母版页上的一个 ContentPlaceHolders。
例如,如果我构建站点并加载 HeadContent1.aspx(第一个链接),则仅显示 HeadContent1 中的内容(显然,加上母版页中的标记)。如果我单击第三个链接,则会显示第二个 ContentPlaceHolder 中的内容,但第一个占位符会恢复为其默认标记。
这种行为似乎都符合设计,无疑在许多情况下都非常有用,但我想做的是让两个 ContentPlaceholder 彼此独立刷新。或多或少地像老式的 HTML 框架一样工作?这可能吗,还是我应该使用其他控件(或其他设置而不是主/内容)?
【问题讨论】:
标签: asp.net master-pages