마스터 페이지 이상 함- "콘텐츠 컨트롤은 콘텐츠 페이지의 최상위 컨트롤이거나 마스터 페이지를 참조하는 중첩 된 마스터 페이지가 있습니다."
이상 해요. Visual Studio 2008의 솔루션에 새로운 웹 응용 프로그램 프로젝트를 추가했습니다.
마스터 페이지를 만들었습니다. 수정 사항이 없습니다. 새 웹 양식을 작성했습니다. 마스터 페이지를 방금 만든 MP로 설정합니다.
그래도 수정은 없습니다. 마크 업이 없습니다. 사용자 컨트롤이 없습니다. 참조가 없습니다. 아무것도. 그러나 결과가 나타납니다.
Content controls have to be top-level controls in a content page or a nested master page that references a master page.
HttpException (0x80004005): Content controls have to be top-level controls in a content page or a nested master page that references a master page.]
System.Web.UI.MasterPage.CreateMaster(TemplateControl owner, HttpContext context, VirtualPath masterPageFile, IDictionary contentTemplateCollection) +8665016
System.Web.UI.Page.get_Master() +51
System.Web.UI.Page.ApplyMasterPage() +15
System.Web.UI.Page.PerformPreInit() +45
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +282
이 솔루션은 외부의 독립 실행 형 프로젝트에서 동일한 작업을 수행하면 제대로 작동합니다. 차이가 권한 웹 응용 프로그램 프로젝트와 웹 사이트 프로젝트를 사용하고 있음을 명심하십시오.
웹 양식 :
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebUI._Default" MasterPageFile="~/Site1.Master" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
마스터 페이지 :
<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Site1.master.vb" Inherits="WebUI.Site1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
Visual Studio를 사용하는 또 다른 방법은 다음과 같습니다. Visual Studio에서 새 항목을 수행하고 Web Form을 선택하면 현재 웹 양식에 대한 독립 실행 형 * .aspx 웹 양식이 생성됩니다 (이 작업을 수행 했습니까?). . Web Content Form을 선택한 다음 첨부 할 마스터 페이지를 선택해야합니다.
웹 양식에 <html>
태그 와 같은 모든 마크 업이 있으면 안됩니다 . 마스터 페이지가 있으므로 콘텐츠 태그로 시작하면됩니다. aspx 페이지는 다음과 같아야합니다.
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebUI._Default" MasterPageFile="~/Site1.Master" %>
<asp:content id="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
This is the body!
</asp:content>
새 aspx 페이지를 추가 할 때 "새 항목 추가"대화 상자에서 "마스터 페이지 선택"을 확인하십시오.
웹 양식은 다음과 같아야합니다.
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebUI._Default" MasterPageFile="~/Site1.Master" %>
<asp:Content runat="server" ID="head" ContentPlaceHolderId="head">
<!-- stuff you want in >head%lt; -->
</asp:Content>
<asp:Content runat="server" ID="content" ContentPlaceHolderId="ContentPlaceHolder1">
<h1>Your content</h1>
</asp:Content>
<html>
태그 가 없습니다.
WebForm을 만들 때 "Add New Item"대화 상자 자체에서 첨부 된 마스터 페이지를 선택 했습니까? 아니면 지시문 의 MasterPageFile
속성을 사용하여 수동으로 첨부 했 @Page
습니까? 후자 인 경우 수신 한 오류 메시지를 설명 할 수 있습니다.
VS는 각 페이지 종류에 특정 마크 업을 자동으로 삽입합니다. 페이지를 만들 때 MasterPage를 선택하면 @Page
선언 및 최상위 콘텐츠 컨트롤을 제외한 모든 태그가 생성되지 않습니다 .
어떤 이유로 페이지 만들기 대화 상자에 마스터 페이지를 선택하는 옵션이 없습니다. 프로그래밍 방식으로 MP를 선언하고 속성 창에서 속성을 업데이트 해 보았습니다. – NoCarrier 13 분 전
나는 "웹 응용 프로그램"과 "웹 사이트"를 사용하고 있기 때문에 믿습니다 – NoCarrier 9 분 전
문제가있는 <@PAGE> 태그에있을 가능성이 있습니다. 즉, 웹 응용 프로그램을 사용하는지 여부에 관계없이 차이가 없습니다. 자식 페이지를 만들려면 솔루션 탐색기에서 마스터 페이지를 마우스 오른쪽 단추로 클릭하고 콘텐츠 페이지 추가를 선택합니다.
이 문제가 발생했습니다. 이중 슬래시로 끝나는 태그가 있었기 때문입니다.
<//asp:HyperLink>
방금이 예외가 발생했으며 제 경우에는 asp : content 요소 사이의 공백으로 인해 발생했습니다.
그래서 이것은 실패했습니다.
<asp:content runat="server" ContentPlaceHolderID="Header">
Header
</asp:content>
<asp:Content runat="server" ContentPlaceHolderID="Content">
Content
</asp:Content>
그러나 요소 사이의 공백을 제거하면 효과가 있습니다.
<asp:content runat="server" ContentPlaceHolderID="Header">
Header
</asp:content><asp:Content runat="server" ContentPlaceHolderID="Content">
Content
</asp:Content>
내가 생각하지 않는 것보다 늦게까지 ... 웹 사이트를 개발하는 경우에만 MASTERPAGE를 설정할 수있는 옵션이 제공됩니다 (FILE> NEW> WEBSITE) ...하지만 ASP.NET 프로젝트를 만들 때는 (FILE> NEW>) PROJECT)-새로 생성 된 웹 양식의 속성을 사용하여 마스터 페이지를 설정해야하며 마스터 페이지와 호환되도록 ASPX 소스를 수정하는 것은 사용자에게 달려 있습니다 (예 : 스톡 HTML 제거 등).
protected void Page_PreInit(object sender, EventArgs e)
{
if (Membership.GetUser() == null) //check the user weather user is logged in or not
this.Page.MasterPageFile = "~/General.master";
else
this.Page.MasterPageFile = "~/myMaster.master";
}
SharePoint Designer 2013에서 웹 파트 (.aspx) 페이지를 편집 한 후이 오류가 발생했습니다. SPD에서 코드를 보았을 때 페이지 상단 근처의 H1 요소가 노란색으로 강조 표시되었습니다. 마우스를 가져 가면 SharePoint : AjaxDelta가 H1 이전에 닫히지 않았 음을 나타냅니다. </SharePoint:AjaxDelta>
수정 추가 .
SPD가 페이지의 다른 곳에서 listview 웹 파트 또는 페이지 뷰어 웹 파트를 작업 한 후 오류를 도입 한 것처럼 보였기 때문에 이상했습니다.
제 경우에는 페이지에서 동적으로 사용자 정의 컨트롤을로드하고 있었고 페이지와 사용자 정의 컨트롤 모두에 콘텐츠 태그가있었습니다.
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
사용자 정의 컨트롤에서이 태그를 제거하면 저에게 효과적이었습니다.
ASP 콘텐츠 를 추가 하고 마스터 페이지의 자리 표시 자에 해당하는 콘텐츠 자리 표시 자 ID 를 추가해야 합니다.
자세한 내용은 이 링크 를 읽을 수 있습니다.
'ProgramingTip' 카테고리의 다른 글
if (expr) 대신 if (!! (expr)) 사용 (0) | 2020.11.13 |
---|---|
오류 TS1005 : ';' (0) | 2020.11.13 |
다차원 numpy 배열에서 가장 큰 항목의 위치 가져 오기 (0) | 2020.11.13 |
Android의 자산 폴더 또는 원시 폴더에 파일을 쓰는 방법은 무엇입니까? (0) | 2020.11.13 |
요소가 부모의 마지막 자녀 확인 (0) | 2020.11.13 |