Загрузка ContentPlaceHolders из отдельных файлов

Я пытаюсь создать страницу Main.master с двумя разделами ContentPlaceHolder. Когда я загружаю страницу по умолчанию, она отображает только 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, как я могу иметь отдельные файлы содержимого, и оба они отображаются на одной странице?

введите описание изображения здесь


person Bob R    schedule 17.03.2016    source источник


Ответы (1)


Вы должны спросить себя: если вы перейдете к Default.aspx, как ваше приложение узнает, что нужно захватить контент в Second.aspx? Проще говоря: не будет.

Во-первых, вот MSDN на ContentPlaceHolder.

У вас может быть столько 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>

И вы получите желаемый результат.

Теперь есть способы визуализировать ВНЕШНИЙ html файл В один из этих заполнителей контента (одним из способов может быть javascript), но (и, пожалуйста, кто-нибудь поправьте меня, если я ошибаюсь), способа сделать это не будет. с веб-страницей ASPX, с выделенным кодом или без него.

Чтобы коснуться вашего вопроса:

как я могу иметь отдельные файлы содержимого и отображать их на одной странице?

Вы можете изучить это: Как включить частичное представление внутри веб-формы

person Dan Orlovsky    schedule 17.03.2016