2017-01-22 4 views
0

В MVC можно использовать в _Layout.cshtml:Рендер мастер элемент страницы на основе детской страницы

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

вместе с @Section styles от содержания страницы/макета включить стили CSS в <head>, если данный участок не требуется.

Есть ли эффективный способ имитировать такое же поведение в веб-формах?

Подводя итог: Я хотел бы иметь возможность отображать css и js на главной странице, только если они требуются определенной дочерней страницей на основе этой главной страницы. Поэтому он не будет включен на страницы, для которых не требуются файлы css и js.

ответ

1

Вы можете использовать ContentPlaceHolder. На странице мастера, определить содержание обладателя места следующим образом:

<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> 
Смежные вопросы