NoC*_*ier 66 asp.net master-pages visual-studio-2008
这很奇怪.我在Visual Studio 2008中为我的解决方案添加了一个全新的Web应用程序项目.
创建了一个母版页.零修改.创建了一个新的webform.将其母版页设置为刚刚创建的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
Run Code Online (Sandbox Code Playgroud)
如果我在这个解决方案之外的独立项目中做同样的事情,它可以正常工作.请记住,如果这有任何区别,我正在使用Web应用程序项目与网站项目.
网络形式:
<%@ 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>
Run Code Online (Sandbox Code Playgroud)
母版页:
<%@ 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>
Run Code Online (Sandbox Code Playgroud)
Jer*_*eid 79
您的Web表单不应具有所有标记(如<html>
标记).由于它有一个母版页,您只需从内容标记开始.您的aspx页面应如下所示:
<%@ 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>
Run Code Online (Sandbox Code Playgroud)
当您添加新的aspx页面时,请务必在"添加新项目"对话框中选中"选择母版页".
gab*_*abe 55
这是使用Visual Studio的另一种方式:如果您在Visual Studio中执行New Item并选择Web Form,它将创建一个独立的*.aspx Web表单,这是您当前Web表单的内容(这是您做的?) .您需要选择Web Content Form,然后选择要附加到其上的母版页.
您的网络表单应如下所示:
<%@ 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 >head%lt; -->
</asp:Content>
<asp:Content runat="server" ID="content" ContentPlaceHolderId="ContentPlaceHolder1">
<h1>Your content</h1>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
请注意,没有<html>
标签
归档时间: |
|
查看次数: |
138948 次 |
最近记录: |