在默认Web窗体模板中声明的导航元素在哪里?

时间:2014-11-25 19:41:40

标签: c# asp.net

非常基本的问题。我正在尝试学习ASP.NET。我在VS 2013社区中创建了一个默认的网站1我收到了大量的文件。当我在IS中运行应用程序时,会出现default.aspx网页,一切正常,但网页上方是一个横幅,其中包含指向contact.aspx,login.aspx的链接。 register.aspx等,我找不到那个横幅在哪里?它不在default.aspx上。它在哪里?为" Contact.aspx"只返回一个结果,页面本身,作为一个例子。

1 个答案:

答案 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级别设置它)。