ASP.NET masterpages: как вставить разметку в раздел head внутри aspx? - PullRequest
7 голосов
/ 20 февраля 2009

Я знаю, что могу получить доступ к заголовку страницы, которая использует мастер-страницу программно таким образом (в коде позади):

Это только пример (я хотел бы вставить сценарии, стили и т. Д.):

this.Header.Title = "I just set the page's title";

Есть ли простой способ сделать это 101 * * декларативным способом в самом файле aspx ?

Иногда было бы удобно вставить клиентский скрипт или объявление стиля или ссылку на внешний ресурс.

Ответы [ 4 ]

22 голосов
/ 20 февраля 2009

Вы можете сделать это, используя области содержимого в head, точно так же, как в body страницы. Например, на вашей главной странице:

<head>
    <link type="text/css" rel="stylesheet" href="/styles/common1.css" />
    <script type="text/javascript" src="/scripts/common1.js"></script>
    <asp:contentplaceholder id="ExtraStylesAndScripts" runat="server" />
</head>

А то на самой странице просто что-то вроде:

<asp:content contentplaceholderid="ExtraStylesAndScripts" runat="server">    
    <link type="text/css" rel="stylesheet" href="/styles/extra1.css" />
    <link type="text/css" rel="stylesheet" href="/styles/extra2.css" />
    <script type="text/javascript" src="/scripts/extra1.js"></script>
    <script type="text/javascript" src="/scripts/extra2.js"></script>
</asp:content>
6 голосов
/ 20 февраля 2009

Для таблицы стилей вы можете использовать это:

HtmlLink cssRef = new HtmlLink();
cssRef.Href = "addins/main.css";
cssRef.Attributes["rel"] = "stylesheet";
cssRef.Attributes["type"] = "text/css";
Page.Header.Controls.Add(cssRef);

Для метатеги :

HtmlMeta metaTag = new HtmlMeta();
metaTag.Name = "author";
metaTag.Content = "ScarletGarden";
Page.Header.Controls.Add(metaTag);

Но нет способа добавить внешние файлы скриптов в элемент заголовка.

Вы можете добавить внутрь элемента тела:

if (!ClientScript.IsClientScriptIncludeRegistered("myExternalScript"))
{
   ClientScript.RegisterClientScriptInclude("myExternalScript", "js/myJSFile.js");
}

Надеюсь, это поможет!

2 голосов
/ 20 февраля 2009

Вы можете объявить заголовок страницы в объявлении страницы содержимого.

<%@ Title="Page Title" Page Language="C#" AutoEventWireup="true" CodeFile="Subpage.aspx.cs" Inherits="Subpage" MasterPageFile="~/MasterPage.master" %>
0 голосов
/ 20 февраля 2009

Я не пробовал это.
Но вы можете поместить элемент HEAD в html с вложенной строкой в ​​разметке в стиле asp.

например. <%=myTitle%>

...