2009-02-20 4 views
7

Je sais que je peux access the head section of a page which uses a masterpage programmatically cette façon (dans le code derrière):Pages maîtres ASP.NET: comment insérer un balisage dans la section head à l'intérieur de l'aspx?

C'est seulement un exemple (je voudrais insérer des scripts et des styles, etc.):

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

Y at-il un façon simple de le faire dans un déclaratif chemin sur dans le fichier ASPX lui-même?

Parfois, il serait utile d'insérer un script client ou une déclaration de style ou un lien vers une ressource externe.

Répondre

22

Vous pouvez le faire en utilisant les régions de contenu dans le head, exactement de la même manière que vous le feriez dans la body de la page. par exemple, dans votre 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> 

Et puis dans la page elle-même quelque chose comme:

<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! Je suis tellement idiot. Je ne sais pas, mais j'ai eu cette idée, ContentPlaceholders ne pouvait pas être utilisé dans la section tête ... merci beaucoup! – splattne

+1

Dans VS2008 sous 3.5 Visual Studio fait même cela pour vous lorsque vous créez une page MasterPage –

0

Je n'ai pas essayé cela.
Mais vous pouvez mettre l'élément HEAD à l'intérieur de html avec la chaîne ci-jointe dans le balisage de style asp.

par exemple. <%=myTitle%>

+0

Je ne suis pas intéressé par le titre (il était seulement un exemple). Je veux insérer des scripts, des styles, etc. en utilisant intellisense. Je ne veux pas le faire par programme. – splattne

6

Pour stylesheet vous pouvez utiliser ceci:

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

Pour Meta Tags:

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

Mais il n'y a aucun moyen d'ajouter des fichiers de script externes à l'élément d'en-tête.

Vous pouvez ajouter à l'intérieur de l'élément du corps par:

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

Hope this helps!

+0

Merci pour votre réponse. Mais je cherche une solution le faisant de manière DÉCLARATIVE. – splattne

2

Vous pouvez déclarer le titre de la page dans la déclaration de la page de contenu.

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

Merci pour votre réponse. Peut-être que mon exemple est trompeur. Je voudrais insérer d'autres choses, comme des styles ad hoc pour cette page individuelle et javascript. – splattne

Questions connexes