【问题标题】:Loading ContentPlaceHolders from separate files从单独的文件加载 ContentPlaceHolders
【发布时间】:2016-07-04 01:26:21
【问题描述】:

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

【问题讨论】:

    标签: asp.net rendering contentplaceholder


    【解决方案1】:

    您必须问自己:如果您导航到 Default.aspx,您的应用程序如何知道要抓取 Second.aspx 中的内容?简单地说:不会。

    首先,这是 ContentPlaceHolder 上的 MSDN

    您可以在母版页上拥有任意数量的 ContentPlaceHolder,并且每个页面都可以呈现到这些内容区域中,也可以不呈现。

    所以你的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多