Странность главной страницы - «Элементы управления содержимым должны быть элементами управления верхнего уровня на странице содержимого или вложенной главной странице, которая ссылается на главную страницу». - PullRequest
64 голосов
/ 07 мая 2009

Это странно. Я добавил новый проект веб-приложения в свое решение в 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>

Ответы [ 12 ]

0 голосов
/ 09 мая 2019

Вам необходимо добавить содержимое asp и добавить идентификатор заполнителя содержимого соответствует заполнителю на главной странице.

Вы можете прочитать эту ссылку для более подробной информации

0 голосов
/ 03 мая 2019

В моем случае я динамически загружал пользовательский элемент управления на странице, и на странице, и на пользовательском элементе управления были теги содержимого

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

Удаление этого тега из пользовательского элемента управления сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...