ASP.NET masterpages: how to insert markup in the head section inside the aspx?
Asked Answered
I

4

7

I know I can access the head section of a page which uses a masterpage programmatically this way (in code behind):

This is only an example (I'd like to insert scripts and styles etc.):

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

Is there a simple way to do this in a declarative way on in the aspx file itself?

Sometimes it would be handy to insert a client script or a style declaration or a link to an external resource.

Iey answered 20/2, 2009 at 8:24 Comment(0)
S
22

You can do this by using content regions in the head, in exactly the same way as you would in the body of the page. eg, In your 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>

And then in the page itself just something like:

<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>
Sergeant answered 20/2, 2009 at 9:38 Comment(2)
D'oh! I'm such an idiot. I don't know, but I had this idea, that ContentPlaceholders could not be used in the head section... thanks a lot!Iey
In VS2008 under 3.5 Visual Studio even does this for you when you create a MasterPageRadiance
M
6

For stylesheet you can use this :

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

For Meta Tags :

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

But there is no way to add external script files to header element.

You can add inside body element by :

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

Hope this helps !

Mobcap answered 20/2, 2009 at 8:48 Comment(1)
Thanks for your answer. But I'm looking for a solution doing it in a DECLARATIVE way.Iey
T
2

You can declare the page title in the content page declaration.

<%@ Title="Page Title" Page Language="C#" AutoEventWireup="true" CodeFile="Subpage.aspx.cs" Inherits="Subpage" MasterPageFile="~/MasterPage.master" %>
Torrance answered 20/2, 2009 at 9:0 Comment(1)
Thank you for your answer. Maybe my example is misleading. I'd like to insert other things, like ad-hoc styles for that individual page and javascript.Iey
M
0

I haven't tried this.
But you can put HEAD element inside html with the enclosed string in asp style markup.

e.g. <%=myTitle%>

Magnesium answered 20/2, 2009 at 8:40 Comment(1)
I'm not interested in the title (it was only an example). I want to insert scripts, styles etc. using intellisense. I don't want to do it programmatically.Iey

© 2022 - 2024 — McMap. All rights reserved.