Dziwność strony wzorcowej - " kontrolki zawartości muszą być kontrolkami najwyższego poziomu na stronie Zawartości lub zagnieżdżonej stronie wzorcowej, która odwołuje się do strony wzorcowej."

To dziwne. Dodałem zupełnie nowy projekt aplikacji webowej do mojego rozwiązania w Visual Studio 2008.

Utworzono stronę wzorcową. Żadnych modyfikacji. Utworzono nowy formularz internetowy. Ustaw jego stronę wzorcową NA MP, który właśnie stworzyłem.

Mimo to, żadnych modyfikacji. Bez znaczników. Brak kontroli użytkownika. Brak referencji. Nic. Jednak kiedy próbuję go uruchomić, dostaję:
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

Jeśli zrobię dokładnie to samo w samodzielnym projekcie, który jest poza tym rozwiązaniem, to działa dobrze. Pamiętaj że używam projektu aplikacji internetowej vs projektu strony internetowej, jeśli to robi jakąś różnicę.

Webform:

<%@ 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>

Strona główna:

<%@ 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>
Author: meJustAndrew, 2009-05-07

10 answers

Oto inny sposób korzystania z Visual Studio: jeśli zrobisz nowy element w Visual Studio i wybierzesz Web Form, utworzy on samodzielny*.aspx web form, czyli to, co masz do obecnego formularza internetowego (czy to, co zrobiłeś?). Musisz wybrać formularz zawartości internetowej, a następnie wybrać stronę wzorcową, którą chcesz dołączyć do niej.

 52
Author: gabe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 19:14:39

Twój formularz internetowy nie powinien mieć wszystkich takich znaczników(jak znacznik <html>). Ponieważ ma stronę wzorcową, po prostu zaczynasz od tagu content. Twoja strona aspx powinna wyglądać tak:

<%@ 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>

Podczas dodawania nowej strony aspx zaznacz "wybierz stronę wzorcową" w oknie dialogowym "Dodaj nowy element".

 73
Author: JerSchneid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-07 17:24:59

Twój formularz internetowy powinien wyglądać tak:

<%@ 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 &gt;head%lt; -->
</asp:Content>

<asp:Content runat="server" ID="content" ContentPlaceHolderId="ContentPlaceHolder1">
<h1>Your content</h1>
</asp:Content>

Zauważ, że nie ma <html> znacznika

 6
Author: Joshua Shannon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-21 17:38:15

Czy podczas tworzenia formularza internetowego wybrałeś stronę wzorcową, do której jest dołączony w samym oknie dialogowym "Dodaj nowy element"? A może załączyłeś go ręcznie używając atrybutu MasterPageFile dyrektywy @Page? Jeśli był to ten ostatni, może to wyjaśnić otrzymany komunikat o błędzie.

VS automatycznie wstawia pewne znaczniki w każdym rodzaju strony. Jeśli wybierzesz stronę główną podczas tworzenia strony, nie wygeneruje ona żadnych znaczników poza deklaracją @Page i najwyższym poziomem Kontrola treści.

 4
Author: Cerebrus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-07 17:11:22

Z jakiegoś powodu, nie ma opcji w okno dialogowe Utwórz stronę, aby wybrać Strona główna. Próbowałem obu programowo deklarowanie posła i poprzez aktualizację nieruchomości w Panel właściwości. - NoCarrier 13 min ago

Wierzę, że to dlatego, że używam " sieci aplikacja "vs a" strona www" – NoCarrier 9 min. temu

Są szanse, że jest w tagu , gdzie jest Twój problem. To powiedziawszy, nie ma znaczenia, jeśli korzystasz z Internetu Podanie czy nie. Aby utworzyć stronę podrzędną, kliknij prawym przyciskiem myszy stronę wzorcową w Eksploratorze rozwiązania i wybierz opcję Dodaj stronę zawartości.

 4
Author: Serapth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-07 17:30:03

Mam problem. To dlatego, że mieliśmy tag kończący się podwójnymi ukośnikami:

<//asp:HyperLink>
 3
Author: Daniel Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-29 04:03:58

Właśnie napotkałem ten wyjątek i w moim przypadku był spowodowany przez białą spację między elementami asp: content

Więc to się nie udało:

<asp:content runat="server" ContentPlaceHolderID="Header">
    Header
</asp:content>

<asp:Content runat="server" ContentPlaceHolderID="Content">
    Content
</asp:Content>

Ale usunięcie białych spacji między elementami działa:

<asp:content runat="server" ContentPlaceHolderID="Header">
    Header
</asp:content><asp:Content runat="server" ContentPlaceHolderID="Content">
    Content
</asp:Content>
 3
Author: Thorgeir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-31 16:04:46

Chyba lepiej późno niż wcale... dostajesz opcję Ustawienia strony głównej tylko dla osób, które tworzą witrynę internetową (plik>nowa>witryna internetowa)... ale nie kiedy tworzysz ASP.NET projekt (plik > nowy > projekt) - tam musisz ustawić stronę wzorcową używając właściwości nowo utworzonego formularza internetowego i to do ciebie należy zmodyfikować źródło ASPX, aby było zgodne ze stroną wzorcową(np...)

 2
Author: flaZer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-11 15:50:28
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";
}
 2
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-14 18:08:03

Napotkałem ten błąd po edycji web part (.aspx) strona w SharePoint Designer 2013. Kiedy spojrzałem na kod w SPD, element H1 u góry strony był podświetlony na Żółto. Najechanie kursorem na to wskazuje, że SharePoint: AjaxDelta nie został zamknięty przed H1. Dodanie </SharePoint:AjaxDelta> naprawiło to.

Dziwne, ponieważ pojawił się SPD wprowadził błąd po pracy na listview web parts lub strona viewer web part gdzie indziej na stronie.

 1
Author: G. Laushine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-05 17:21:11