2009-02-20 15 views
7

Sé que puedo access the head section of a page which uses a masterpage programmatically esta manera (en código detrás):Páginas maestras de ASP.NET: ¿cómo insertar marcas en la sección principal dentro de aspx?

Este es solo un ejemplo (Me gustaría insertar secuencias de comandos y estilos, etc.):

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

¿Existe una forma simple de hacer esto en un declarativo manera en en el archivo aspx sí mismo?

veces sería muy útil para insertar un guión cliente o una declaración de estilo o un enlace a un recurso externo.

Respuesta

22

Usted puede hacer esto mediante el uso de áreas de contenido en el head, exactamente de la misma manera que lo haría en el body de la página. por ejemplo, en su masterpage:

<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> 

Y luego, en la propia página simplemente algo como:

<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> 
+2

D'oh! Soy un idiota. No lo sé, pero tuve la idea de que ContentPlaceholders no podía usarse en la sección principal ... ¡muchas gracias! – splattne

+1

En VS2008 con menos de 3.5 Visual Studio incluso hace esto por usted cuando crea una página maestra –

0

No he intentado esto.
Pero puede poner el elemento HEAD dentro de html con la cadena incluida en el marcado de estilo asp.

p. Ej. <%=myTitle%>

+0

No estoy interesado en el título (que era sólo un ejemplo). Quiero insertar scripts, estilos, etc. usando intellisense. No quiero hacerlo programáticamente. – splattne

6

Para hoja de estilo puede utilizar esto:

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

Para Meta Tags:

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

Pero no hay manera de agregar archivos de comandos externos a elemento de cabecera.

Puede agregar dentro elemento del cuerpo por:

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

Espero que esto ayude!

+0

Gracias por su respuesta. Pero estoy buscando una solución para hacerlo de manera DECLARATIVA. – splattne

2

Puede declarar el título de la página en la declaración de la página de contenido.

<%@ Title="Page Title" Page Language="C#" AutoEventWireup="true" CodeFile="Subpage.aspx.cs" Inherits="Subpage" MasterPageFile="~/MasterPage.master" %> 
+0

Gracias por su respuesta. Tal vez mi ejemplo es engañoso. Me gustaría insertar otras cosas, como estilos ad-hoc para esa página individual y javascript. – splattne

Cuestiones relacionadas