非常基本的问题。我正在尝试学习ASP.NET。我在VS 2013社区中创建了一个默认的网站1我收到了大量的文件。当我在IS中运行应用程序时,会出现default.aspx网页,一切正常,但网页上方是一个横幅,其中包含指向contact.aspx,login.aspx的链接。 register.aspx等,我找不到那个横幅在哪里?它不在default.aspx上。它在哪里?为" Contact.aspx"只返回一个结果,页面本身,作为一个例子。
答案 0 :(得分:3)
它可能来自Master Page。查看<%@ Page %>
文件顶部的.aspx
标题。您将看到他们引用母版页。母版页用于为网站提供结构。这意味着您不必为每个内容页面上的公共元素编写相同的HTML。然后,内容页面(.aspx)可以将其内容插入到母版页中。是的,你可以嵌套母版页。这一切都是通过<asp:ContentPlaceHolder />
(更高级母版页)和<asp:Content />
(嵌套母版页或内容页)标签完成的。
让我们看一个例子:
MasterPage.master
<%@ Master Language="C#" %>
<!DOCTYPE html>
<html>
<head runat="server" >
<title>Master page title</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="Main" runat="server" />
</div>
<div>
<asp:ContentPlaceHolder id="Footer" runat="server" />
</div>
</form>
</body>
</html>
Default.aspx的
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
Main content here.
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" runat="Server" >
Footer content here.
</asp:Content>
当您访问Default.aspx时,生成的HTML在客户端上将如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Content Page 1</title>
</head>
<body>
<form id="ContentPage_form1">
<div>
Main content here.
</div>
<div>
Footer content here.
</div>
</form>
</body>
</html>
请特别注意表单的ID如何从服务器端更改为客户端。当他们开始使用客户端JavaScript时,这会让很多人感到高兴。如果您希望ID不更改,则必须将ClientIDMode="Static"
属性添加到控件(您还可以在page,web.config或machine.config级别设置它)。