Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot use Response.Write in <head> section of aspx page?

I'm trying to use the Response.Write() method to dynamically insert content in the < head > section of an aspx page. I need to inject a string value from a property on a code-behind object which is a link to my CSS file. However, it is not being processed properly at run time. The object is public on the class and is hydrated in the Page_Load() event. Down in the body of the page I can successfully inject other properties from the Corpoartion object with no problem at all.

Why does this not work in the < head > section?

This is the part that does not expand correctly:

<link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />

Here is the entire < head > section:

<head runat="server">
    <title></title>
    <link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />
    <script language="JavaScript" type="text/JavaScript" src="cntv_menu.js"></script>
    <script language="JavaScript" type="text/JavaScript" src="cntv_category.js"></script>   
</head>

What is the reason that this will not expand properly?

like image 874
MattSlay Avatar asked Feb 18 '10 16:02

MattSlay


1 Answers

You can't use <%= %> inside a runat="server" tag, which your <head> tag is.

You can either change it to <%# %> and DataBind to it in the code-behind, or you can make the link tag runat="server", give it an id and assign the attribute from the code behind.

See this answer, which goes into the details.

like image 164
Richard Szalay Avatar answered Sep 18 '22 19:09

Richard Szalay