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

本文关键字:声明 导航 元素 在哪里 默认 Web 窗体 | 更新日期: 2023-09-27 18:32:01

非常非常基本的问题。我正在努力学习 ASP.NET。我在VS 2013社区中创建了一个默认网站1,我得到了大量的文件。当我在IS中运行应用程序时,会出现默认.aspx网页,一切正常,但网页上方是一个横幅,其中包含指向联系人.aspx,登录.aspx的链接。注册.aspx等,我找不到那个横幅在哪里?这不是默认的,.aspx。它在哪里?搜索"联系人.aspx"的项目仅返回一个结果,例如页面本身。

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

它可能来自母版页。查看.aspx文件顶部的<%@ Page %>标题。您将看到它们引用母版页。母版页用于为网站提供结构。这意味着您不必为每个内容页面上的常见元素编写相同的 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>

默认.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 级别设置它)。