我正在尝试创建一个包含两个ContentPlaceHolder部分的Main.master页面。 当我加载默认页面时,它只呈现ContentPlaceHolder1,我必须实际加载Second.aspx才能看到第二个ContentPlaceHolder。为什么呢?
在我的Main.master中,我有:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Main" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="ContentPlaceHolder2" runat="server"></asp:ContentPlaceHolder>
</div>
</body>
</html>
此外,我还创建了两个额外的页面Default.aspx和Second.aspx:
Detault:
<%@ Page Title="" Language="C#" MasterPageFile="~/Main.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
HOW HOW HOW HOW
</asp:Content>
其他页面是
Second:
<%@ Page Title="" Language="C#" MasterPageFile="~/Main.master" AutoEventWireup="true" CodeFile="Second.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
COW COW COW COW
</asp:Content>
它只渲染第一个PlaceHolder,我怎样才能拥有单独的内容文件并在同一页面上呈现?
答案 0 :(得分:0)
您必须问自己:如果您导航到Default.aspx,您的应用程序将如何知道在Second.aspx中获取内容?简单地说:它不会。
首先,这是ContentPlaceHolder上的MSDN。
您可以在主页上拥有任意数量的ContentPlaceHolders,并且每个页面都可以呈现到这些内容区域中。或者不是。
所以你的Default.aspx看起来像:
<%@ Page Title="" Language="C#" MasterPageFile="~/Main.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
HOW HOW HOW HOW
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
COW COW COW COW
</asp:Content>
您将获得所需的结果。
现在,有一些方法可以将OUTSIDE html文件渲染到其中一个内容占位符(一种方式是javascript) - 但是(如果我错了,请有人纠正我)不会有办法使用ASPX网页,代码隐藏与否。
触及您的问题:
我如何拥有单独的内容文件并将两者都呈现在同一页面上?