ASP.NET で「コンテンツ コントロールは、コンテンツ ページまたはマスター ページを参照する入れ子にされたマスター ページでトップ レベルのコントロールでなければなりません。」が表示される原因の一つは runat=”server” の不足

こんな感じでASP.NETのマスターページとコンテンツページを書いたところ…

SiteMaster.master

<!DOCTYPE html>
<%@ Master Language=”C#” %>
<html dir=”ltr”>

<head runat=”server”>
<meta content=”text/html; charset=utf-8″ http-equiv=”Content-Type”>
<title>無題 1</title>
<asp:ContentPlaceHolder id=”head” runat=”server”>
</asp:ContentPlaceHolder>
</head>

<body>

<form id=”form1″ runat=”server”>
    <asp:ContentPlaceHolder id=”ContentPlaceHolder1″ runat=”server”>
    </asp:ContentPlaceHolder>
</form>

</body>

</html>

ContentPage.aspx

<%@ Page language=”C#” masterpagefile=”SiteMaster.master” %>
<asp:Content ContentPlaceHolderID=”head”></asp:Content>
<asp:Content ContentPlaceHolderID=”ContentPlaceHolder1″></asp:Content>

こんなエラーが。
image.png

ContentPage.aspx の <asp:Content> に runat=”server” 属性を設定するとエラーがなくなります。

修正版 ContentPage.aspx

<%@ Page language=”C#” masterpagefile=”SiteMaster.master” %>
<asp:Content ContentPlaceHolderID=”head” runat=”server”></asp:Content>
<asp:Content ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”server”></asp:Content>

上記のエラーメッセージでは全然わっかんねーっすよね。

コメントを残す