Master Page-ASP.NET

时间:2014-10-04 19:20:25

标签: asp.net webforms

当我尝试使用母版页创建Web窗体时,我得到了HttpException:

   HttpException (0x80004005): Content controls have to be top-level controls in a content page or a nested master page that references a master page.]

母版页:

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="adminNav.master.cs" Inherits="Site.AdminPages.adminNav" %>
    <!DOCTYPE html>
    <html lang="en">
    <head>
<meta charset="UTF-8">
<title>Admin Page</title>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="/Site/Scripts/CSS/AdminPage.css" />
    </head>
    <body>    
    <div class="bs-example">
    <form runat="server">
        <nav id="myNavbar" class="navbar navbar-inverse" role="navigation">
            <div class="container">
                <div class="navbar-header">
                    <asp:LinkButton class="navbar-brand" Style="color: white" ID="AdminHomePage" runat="server" href="/Site/AdminPages/AdminPage.aspx">Home</asp:LinkButton>
                </div>
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                    <ul class="nav navbar-nav">
                        <li><a href="<%= ResolveUrl("~/AdminPages/Users.aspx")%>">Users</a></li>
                        <li><a href="<%= ResolveUrl("~/AdminPages/Profile.aspx")%>">Profile</a></li>                                                    </ul>
                    <ul class="nav navbar-nav navbar-right">
                        <li class="dropdown">
                            <a href="#" data-toggle="dropdown" class="dropdown-toggle">
                                <asp:Label ID="emailDeatilsLabel" runat="server" Style="color: white"></asp:Label>
                                <b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                    <asp:LinkButton ID="LogOutLabel" runat="server" href="/Site/UserPages/LogOut.aspx">Log Out</asp:LinkButton>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    </form>
</div>
    </body>
    </html>

这是Profile.aspx的代码(我尝试运行并获得异常):

    <%@ Page Title="" Language="C#" MasterPageFile="~/AdminPages/adminNav.Master" 
    AutoEventWireup="true" CodeBehind="Profile.aspx.cs" Inherits="Site.AdminPages.Profile" %>
    <!DOCTYPE html>
    <head>
    </head>
    <body>
        <p class="explainText">
            First name:
        <br />
            <asp:TextBox ID="ProfilefirstNameTextBox" class="form-control" runat="server" Width="250px" ForeColor="Black" placeholder="First Name" required="true" OnTextChanged="ProfilefirstNameTextBox_TextChanged" />
    </body>    
    </html>

我还尝试在Profile.aspx代码中只编写元素(没有...)代码,但它仍然不起作用

1 个答案:

答案 0 :(得分:0)

  

内容控件必须是内容页面中的顶级控件或引用母版页的嵌套母版

Visual Studio告诉您执行以下操作;

使用像这样的占位符标记

来标记你的标记
<asp:Content Id="ContentI" ContentPlaceHolderID="ContentPlaceHolder" runat="server">

 <p class="explainText">
        First name:
    <br />
        <asp:TextBox ID="ProfilefirstNameTextBox" class="form-control" runat="server" Width="250px" ForeColor="Black" placeholder="First Name" required="true" OnTextChanged="ProfilefirstNameTextBox_TextChanged" />

</asp:Content>

您不需要在从母版页注入时放置html和body标签。这就是主页和子页的工作方式。