2014-10-01 2 views
0

두 개의 ContentPlaceHolders가있는 마스터 페이지를 만듭니다. ContentPlaceHolders1은 하이퍼 링크가있는 메뉴이고 ContentPlaceHolders3 인 다른 ContentPlaceHolders에는 선택한 하이퍼 링크가 페이지를 열 수 있습니다. 문제는 왼쪽 apperars의 메뉴이지만 그 중 하나에서 하이퍼 링크를 클릭하면 ContentPlaceHolders3 페이지가 열리지 만 ContentPlaceHolders1의 전체 메뉴가 사라집니다. picture.aspx 및 sample.aspx는 ContentPlaceHolder3에서 열어야하는 페이지입니다.itemplace에서 항목이 사라지는 경우

admin_panel.master :

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="admin_panel.master.cs" Inherits="admin_panel" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

</head> 
<body> 

<form id="form1" runat="server"> 

     <table style="font-family: Arial"> 
      <tr> 
       <td colspan="2" style="width: 800px; height: 80px; background-color: #3399FF; text-align: center"> 
        <h1>WebSite Header</h1> 
       </td> 
      </tr> 
      <tr> 
       <td style="height: 500px; background-color: #66FFFF; width: 150px"> 
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 

      </asp:ContentPlaceHolder> 
       </td> 
       <td style="height: 500px; background-color: #9999FF; width: 650px"> 
        <h3>Content</h3> 
        <div> 
         <asp:ContentPlaceHolder ID="ContentPlaceHolder3" runat="server"> 
         </asp:ContentPlaceHolder> 
        </div> 
       </td> 
      </tr> 

     </table>  
</form> 
</body> 
</html> 

pictures.aspx :

<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="pictures.aspx.cs" Inherits="pictures" MasterPageFile="~/admin_panel.master"%> 


     <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder3" Runat="Server"> 

      <asp:Image ID="Image1" runat="server" Height="200px" /> 
      <asp:Image ID="Image2" runat="server" Height="200px" /> 
      <asp:Image ID="Image3" runat="server" Height="200px" /><br /> 
      <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 

     </asp:Content> 

샘플 :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="sample.aspx.cs" Inherits="sample" MasterPageFile="~/admin_panel.master"%> 

    <asp:Content ID="nil" ContentPlaceHolderID="ContentPlaceHolder3" runat="server"> 

     <div> 
     <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" style="height: 26px" /> 
    </div> 

    </asp:Content> 

admin.aspx 여기

다른 페이지에 대한 코드입니다 :

<%@ Page Title="" Language="C#" MasterPageFile="~/admin_panel.master" AutoEventWireup="true" CodeFile="admin.aspx.cs" Inherits="admin" %> 


<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server" > 
    <asp:HyperLink ID="HyperLink1" NavigateUrl="~/pictures.aspx" runat="server">Click Me</asp:HyperLink><br /> 
    <asp:HyperLink ID="HyperLink2" NavigateUrl="~/sample.aspx" runat="server">Click Me 2...</asp:HyperLink> 
</asp:Content> 

답변

0

이유는 페이지 sample.aspx를 열면 마스터 페이지 + 샘플 페이지의 조합이 생기는 것입니다. 그래서 우리는 ContentPlaceHolder1 내용을 정의하지 않았습니다. 즉, sample.aspx에는없고 admin_panel.master에는 없습니다. 그것이 비어있는 이유입니다. 관리자 메뉴에서 지정 메뉴 대신 마스터 페이지에 넣을 수 있습니다. 좋아요 :

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
    <asp:HyperLink ID="HyperLink1" NavigateUrl="~/pictures.aspx" runat="server">Click Me</asp:HyperLink><br /> 
    <asp:HyperLink ID="HyperLink2" NavigateUrl="~/sample.aspx" runat="server">Click Me 2...   </asp:HyperLink> 
    </asp:ContentPlaceHolder> 

이렇게하면 문제가 해결됩니다. :)