基于子页面呈现母版页元素
Render master page element based on child page
在 MVC 中可以使用 _Layout.cshtml:
@if (IsSectionDefined("styles"))
{@RenderSection("styles", required: false)}
与内容页面/布局上的 @Section styles
一起在 <head>
中包含 css 样式(如果需要给定部分)。
是否有有效的方法来模仿 Web 表单中的相同行为?
总结一下:我希望有可能在母版页上呈现 css 和 js,前提是基于该母版页的特定子页需要它们。因此它不会包含在不需要那些 css 和 js 文件的页面上。
您可以使用 ContentPlaceHolder
。在您的 master 页面中,按如下方式定义内容占位符:
<head runat="server">
<title>..</title>
<meta charset="utf-8"/>
..
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
..以及那些需要特殊 css
或 js
文件的子页面可以使用此内容占位符来注入他们需要的文件,例如:
<%@ 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>
在 MVC 中可以使用 _Layout.cshtml:
@if (IsSectionDefined("styles"))
{@RenderSection("styles", required: false)}
与内容页面/布局上的 @Section styles
一起在 <head>
中包含 css 样式(如果需要给定部分)。
是否有有效的方法来模仿 Web 表单中的相同行为?
总结一下:我希望有可能在母版页上呈现 css 和 js,前提是基于该母版页的特定子页需要它们。因此它不会包含在不需要那些 css 和 js 文件的页面上。
您可以使用 ContentPlaceHolder
。在您的 master 页面中,按如下方式定义内容占位符:
<head runat="server">
<title>..</title>
<meta charset="utf-8"/>
..
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
..以及那些需要特殊 css
或 js
文件的子页面可以使用此内容占位符来注入他们需要的文件,例如:
<%@ 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>