【问题标题】:How to create layout using asp.net如何使用 asp.net 创建布局
【发布时间】:2017-08-03 21:34:44
【问题描述】:

如何在单独的文件中创建包含页眉、主要内容和页脚的布局?

Site.Master 中有一个菜单、主要内容和页脚,我想将它们分开。 我用母版页 (Menu.aspx) 创建了新的 Web 表单:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Menu.aspx.cs" Inherits="WebApplication2.Menu" %>
<asp:Content ID="Content1" ContentPlaceHolderID="menu" runat="server">
    <div class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" runat="server" href="~/">Application name</a>
                </div>
                <div class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li><a runat="server" href="~/">Home</a></li>
                        <li><a runat="server" href="~/About">About</a></li>
                        <li><a runat="server" href="~/Contact">Contact</a></li>
                    </ul>
                </div>
            </div>
        </div>
</asp:Content>

我正在尝试将它包含在 Site.Master 中:

<form runat="server">
    <!-- Menu -->
    <asp:ContentPlaceHolder ID="menu" runat="server">
        </asp:ContentPlaceHolder>

    <!-- Main content -->
    <div class="container body-content">
        <asp:ContentPlaceHolder ID="MainContent" runat="server">
        </asp:ContentPlaceHolder>

    </div>
</form>

但它不会渲染。怎么了?

【问题讨论】:

    标签: c# asp.net master-pages


    【解决方案1】:

    我认为您的Menu.ascx 中的MasterPageFile 不应该存在。菜单就像一个局部视图,它不应该有母版页。但是,我会选择不同的方法。

    菜单

    <%@ Page Title="" Language="C#" AutoEventWireup="true" CodeBehind="Menu.ascx.cs" Inherits="WebApplication2.Menu" %>
        <div class="navbar navbar-inverse navbar-fixed-top">
                <div class="container">
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <a class="navbar-brand" runat="server" href="~/">Application name</a>
                    </div>
                    <div class="navbar-collapse collapse">
                        <ul class="nav navbar-nav">
                            <li><a runat="server" href="~/">Home</a></li>
                            <li><a runat="server" href="~/About">About</a></li>
                            <li><a runat="server" href="~/Contact">Contact</a></li>
                        </ul>
                    </div>
                </div>
            </div>
    

    我在菜单页面上所做的:我删除了菜单的MasterPageFile 属性,因为菜单不是整个页面而是一个页面的一部分(就像 MVC 中的部分视图)。此外,删除了 &lt;asp:Content&gt; 标记,因为您不希望菜单在 Site.Master 的主目录中呈现。

    Site.Master

    Site.Master 的顶部添加这一行

    <%@ Register TagPrefix="Menu" TagName="Menu" Src="the path to your Menu.ascx" %>
    

    Src 属性的值更改为Menu.Ascx 页面的路径。

    现在您可以像这样在Site.Master 中的任意位置呈现您的Menu.ascx 页面:

    <Menu:Menu runat="server" />
    

    我不是 100% 确定它会起作用,因为我还没有测试过它。如果有什么不对的评论在下面。我会帮你的。

    【讨论】:

    • 我不能以这种方式使用它,因为 menu.aspx 不继承自 'System.Web.UI.UserControl'。我收到一个错误:Parser Error Message: Type 'ASP.menu_aspx' does not inherit from 'System.Web.UI.UserControl'. 错误行:Line 2: &lt;%@ Register TagPrefix="Menu" TagName="Menu" Src="Menu.aspx" %&gt;
    • menu.aspx的顶部写Control而不是Page
    • 我已将 aspx 转换为 ascx,并且还从菜单控件中删除了 ID,以便您可以编辑答案。谢谢
    • 菜单控件的 ID 以防万一您想在 Site.Master 的后端对其进行操作。
    猜你喜欢
    • 2020-01-21
    • 2021-10-23
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2018-09-22
    • 2019-04-29
    • 1970-01-01
    相关资源
    最近更新 更多