2016-03-17 2 views
0

Я пытаюсь создать страницу Main.master с двумя разделами ContentPlaceHolder. Когда я загружаю страницу по умолчанию, она отображает только ContentPlaceHolder1, я должен загрузить Second.aspx, чтобы увидеть второй ContentPlaceHolder. Зачем?Загрузка ContentPlaceHolders из отдельных файлов

В моей 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, как я могу иметь отдельные файлы контента и иметь оба rendere d на той же странице?

enter image description here

ответ

0

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

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

Вы можете иметь как можно больше 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> 

И вы получите результаты, которые вы ищете.

Теперь вы можете визуализировать HTML-файл OUTSIDE INTO в одном из этих заполнителей контента (один способ будет javascript) - но (и, пожалуйста, кто-то поправьте меня, если я ошибаюсь), не будет способ сделать это с помощью веб-страницы ASPX, codebehind или нет.

Коснуться на ваш вопрос:

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

Вы можете посмотреть на это: How to include a partial view inside a webform