ASP.NET 2.0에서 중첩된 마스터페이지 기능은 모두가 사용해 본 적이 있을 것으로 생각됩니다. 이 기능은 매우 강력하며 사용자가 먼저 템플릿 페이지를 만든 다음 이를 다른 페이지에 쉽게 적용할 수 있게 해줍니다. 또한 템플릿 페이지는 중첩될 수 있지만 중첩된 템플릿 페이지에서 문제를 발견하게 됩니다. 즉, 중첩된 템플릿 페이지를 사용할 때 디자인 보기 상태에서 시각적 작업을 수행할 수 있는 방법이 없으므로 이를 해결하는 방법은 무엇입니까? 문제? 해당 외국인의 블로그를 검색하여 해당 외국인이 제공하는 방법을 찾았습니다. 당분간은 이 문제를 해결하기 위해 우회할 수 있습니다. 아래에서 설명하겠습니다.
basepage.cs라는 기본 클래스를 작성하여 app_code 디렉터리에 넣을 수 있습니다. 이 클래스에 basepage.cs라는 클래스를 추가합니다.
RuntimeMasterPageFile의 속성은 런타임 중에 사용할 템플릿 파일을 지정하고 OnPreInit를 재정의하는 문자열 유형입니다.
방법, 코드는 다음과 같습니다.
공개 클래스 BasePage : System.Web.UI.Page
{
비공개 문자열 RuntimeMasterPageFile;
공개 문자열 RuntimeMasterPageFile
{
얻다
{
RuntimeMasterPageFile을 반환합니다.
}
세트
{
런타임마스터페이지파일 = 값;
}
}
보호된 재정의 void OnPreInit(EventArgs e)
{
if(runtimeMasterPageFile != null)
{
this.MasterPageFile = RuntimeMasterPageFile;
}
base.OnPreInit(e);
}
}
다음으로 mainmaster.master라는 템플릿 페이지를 구성하고 그 안에 머리글과 바닥글 정보를 무작위로 추가하고 중간에 MainContent라는 콘텐츠 자리 표시자를 남겨두고 submaster.master라는 템플릿 페이지를 만듭니다.
MasterPageFile="~/MainMaster.master", 메인마스터 템플릿 페이지를 적용하기 위해 다음과 같이 1행 2열의 테이블을 넣습니다.
<asp:Content ID="foo" ContentPlaceHolderId="MainContent" runat="서버">
<테이블>
<tr>
<td 너비="300">
SubMaster의 왼쪽 열
<br />
<asp:ContentPlaceHolder ID="LeftColumn" runat="서버">
</asp:ContentPlaceHolder>
</td>
<TD>
SubMaster의 오른쪽 열
<br />
<asp:ContentPlaceHolder ID="RightColumn" runat="서버">
</asp:ContentPlaceHolder>
</td>
</tr>
</table>
</asp:콘텐츠>
마지막으로 aspx 페이지에서 다음을 지정합니다.
<%@ Page Language="C#" MasterPageFile="" RuntimeMasterPageFile="SubMaster.master" CodeFileBaseClass="BasePage" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="제목 없는 페이지" %>
보시다시피 여기서는 masyterpage의 속성을 설정하지 않고 RuntimeMasterPageFile의 속성을 다음과 같이 지정합니다.
submaster.master, 이는 런타임에 로드되는 템플릿이며, codefilebaseclass 속성은 방금 작성한 basepage.cs 클래스를 지정합니다. 이러한 방식으로 이 ASPX의 디자인 뷰 상태에서 끌어서 놓을 수 있습니다. 디자인.
Microsoft에 따르면 다음 버전의 VISUAL STUDIO까지는 템플릿이 중첩될 때 전체 디자인 보기 상태를 전환하는 기능이 완전히 지원되지 않을 것이라고 합니다.
이 기사의 예제 다운로드를 제공했습니다. 다운로드하려면 여기를 클릭하세요.