【问题标题】:Render master page element based on child page基于子页面呈现母版页元素
【发布时间】:2017-01-22 08:15:13
【问题描述】:

在 MVC 中可以在 _Layout.cshtml 中使用:

@if (IsSectionDefined("styles"))
{@RenderSection("styles", required: false)}

@Section styles 一起在内容页面/布局上包含<head> 中的css 样式(如果需要给定部分)。

有没有一种有效的方法来模仿 Web 表单中的相同行为?

总结:我希望有可能在母版页上呈现 css 和 js,前提是基于该母版页的特定子页需要它们。所以它不会被包含在不需要那些 css 和 js 文件的页面上。

【问题讨论】:

    标签: asp.net asp.net-mvc master-pages


    【解决方案1】:

    您可以使用ContentPlaceHolder。在您的 ma​​ster 页面中,按如下方式定义内容占位符:

    <head runat="server">
        <title>..</title>
        <meta charset="utf-8"/>
        ..
        <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    

    ..那些需要特殊cssjs文件的子页面可以使用这个内容占位符来注入他们需要的文件,例如:

    <%@ Page Title="" Language="C#" MasterPageFile=".." AutoEventWireup="true" CodeBehind=".." %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
        <link href="some css file dedicated only to this child page" rel="stylesheet" />
        <script src="..js.."></script>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        ..
        <h1><asp:Label ID="lblPageTitle" runat="server" Text=""></asp:Label></h1>
        ..
    </asp:Content>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2011-08-07
      • 1970-01-01
      相关资源
      最近更新 更多