从单独的文件

时间:2016-03-17 15:26:09

标签: asp.net rendering contentplaceholder

我正在尝试创建一个包含两个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,我怎样才能拥有单独的内容文件并在同一页面上呈现?

enter image description here

1 个答案:

答案 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网页,代码隐藏与否。

触及您的问题:

  

我如何拥有单独的内容文件并将两者都呈现在同一页面上?

你可能想看看这个: How to include a partial view inside a webform