3

我正在尝试在 asp.net 中添加母版页,但我收到一条错误消息,指出该页面包含在附加到母版页时无效的标记。这是我的母版页文件:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" 
Inherits="Pages_AdminMaster" %>

<!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 style="text-align: right">
    <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

        <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">Log  Out</asp:LinkButton>

    </asp:ContentPlaceHolder>
</div>
</form>

这是我应用该母版页的网络表单:

<%@ Page Language="C#" MasterPageFile="~/Pages/MasterPage.master" 
AutoEventWireup="true" CodeFile="Admin.aspx.cs" Inherits="Pages_Admin" %>

<!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>
<style type="text/css">
    .style1
    {
        text-decoration: underline;
        color: #0000FF;
    }
    .style2
    {
        font-family: 15;
        font-size: 12pt;
        color: #0000FF;
    }
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="style2" style="text-align: right">

</div>
</form>
<p class="style1">
    <a href="CreateCourse.aspx">Create a new course</a></p>
<p class="style1">
    <a href="ModifyCourse.aspx">Modify a course</a></p>
<p class="style1">
    <a href="CreateAccount.aspx">Create a new account</a></p>
<p class="style1">
    <a href="DeleteAccount.aspx">Delete an account</a></p>
<p class="style1">
    <a href="DisableAccount.aspx">Disable an Account</a></p>
<p class="style1">
    <a href="DropStudent.aspx">Drop a Student from a course</a></p>
<p class="style1">
    <a href="EnrollStudent.aspx">Enroll a student to a course</a></p>
<p class="style1">
    <a href="GetStudentInfo.aspx">Get Student info</a></p>
<p class="style1">
    <a href="GetInstructorInfo.aspx">Get Instructor info</a></p>
</body>
</html>

这是浏览器中的错误:

Server Error in '/Bannerweb' Application.

Content controls have to be top-level controls in a content page or a nested master 
page that references a master page.

Description: An unhandled exception occurred during the execution of the current web 
request. Please review the stack trace for more information about the error and where   
it 
originated in the code. 

Exception Details: System.Web.HttpException: Content controls have to be top-level 
controls in a content page or a nested master page that references a master page.

Source Error: 

An unhandled exception was generated during the execution of the current web request. 
Information regarding the origin and location of the exception can be identified using   
the 
exception stack trace below.

Stack Trace: 


[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) +8968123
   System.Web.UI.Page.get_Master() +54
   System.Web.UI.Page.ApplyMasterPage() +15
   System.Web.UI.Page.PerformPreInit() +45
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean    
includeStagesAfterAsyncPoint) +328

两个页面都位于名为 Pages 的文件夹中。谁能帮我这个?谢谢。

4

3 回答 3

2

使用母版页的网络表单,您需要将您的内容<asp:Content ContentPlaceholderID="ContentPlaceHolder1" runat="server"></asp:Content>映射到母版页内的某个页面上显示的内容。

MSDN 提供了有关如何<asp:ContentPlaceHolder />在母版页和http://msdn.microsoft.com/en-us/library/wtxbf3hh(v=vs.100).aspx<asp:Content />上使用的更多信息。

于 2013-05-14T15:57:01.220 回答
2

当您在 Visual Studio 中“添加新项目..”时,您应该选择“Web 表单”,然后在窗口的右下方,在您填写的“名称”框的右侧,选中“选择母版页”。

这样做会在单击“添加”后为您提供另一个对话框,以选择新的 Web 表单应使用的母版页。

您的新网络表单将带有<Content>标签 - 通常用于标题和内容;取决于您的母版页。网络表单不会有所有常用的<doctype><head>标签等。

而不是试图屠宰您当前的页面以获得正确的架构,我会开始一个新的页面并只引入您需要的代码。

于 2013-05-14T16:06:09.367 回答
0

尽管 MSDN 已经很好地解释了该场景,但即使您将代码放在<asp:content>标签中,您也可能会遇到相同的错误。

检查您是否在**<B> </B>**标签内的某处使用了标签<TD> </TD>,它将显示错误消息将其转换为小<b> </b>标签,您将能够看到设计部分。

谢谢

于 2014-07-26T11:18:23.010 回答