?
Solved

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).

Posted on 2009-05-18
3
Medium Priority
?
720 Views
Last Modified: 2012-05-07
I am trying to add a meta tag programatically. However, I get the error :

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>)., when trying to add. See code below.

I do not want to move the script in <%...%> in the body as it is present in all my aspx files. How can I get this to work without making any changes in the aspx page.
<%@ Page language="c#" Inherits="Adomo.Web.Login" CodeFile="Default.aspx.cs" Title="<%$ Resources:PageTitle %>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
	<head runat="server">
		<title />
		<meta name="vs_snapToGrid" content="False" />
		<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR" />
		<meta content="C#" name="CODE_LANGUAGE" />
		<meta content="JavaScript" name="vs_defaultClientScript" />
		<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema" />
		<link href="AdomoCss.css" type="text/css" rel="Stylesheet" /><%
    /*	Add reference for language dependent stylesheet to override layout where needed for non en-US pages. Typically, column widths will be overruled where needed.
Not added for pages called with en-US or with no culture tag (admin pages). */
    if (cultureTag != null && cultureTag != "en-us")
    {
        Response.Write("<link href='AdomoCss." + cultureTag + ".css' type='text/css' rel='Stylesheet' />");
    }
		%>
</head>
 
Adding the html meta tag in code behind in OnLoad method
 
HtmlMeta meta = new HtmlMeta();
meta.HttpEquiv = "X-UA-Compatible";
meta.Content = "IE=EmulateIE7";
this.Header.Controls.Add(meta);

Open in new window

0
Comment
Question by:anshugupta_fremont
  • 2
3 Comments
 
LVL 9

Assisted Solution

by:tetorvik
tetorvik earned 375 total points
ID: 24418896
There are couple of options I am aware of:

1# remove the Response.Write() and add the css link dynamically in code-behind
http://www.aspdotnetfaq.com/Faq/How-to-Programmatically-add-CSS-Stylesheet-file-to-Asp-Net-page.aspx

2# change the <%= %> to binding expression <%# %>
http://leedumond.com/blog/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks/
0
 

Author Comment

by:anshugupta_fremont
ID: 24424028
Do I have any other option (within code behind), that doesnt require change in the aspx file (because , I will have to make this change in 10 other aspx file).

Also, can you please explain why this is happening?

Thanks in Advance
0
 
LVL 9

Accepted Solution

by:
tetorvik earned 375 total points
ID: 24425213
Apparently you are modifying HtmlHead's control collection at code-behind and at aspx page, which is not allowed. I am not aware of the exact reason why this is not allowed.

However I came across one additional hack that gets you around the issue without modifying code-behind code. You'll need to wrap your head (<%=...%>) fragmant with some placeholder (asp:PlaceHolder will do), then you're not modifying the same control collection anymore.
<asp:PlaceHolder runat="server" ID="fbar"> 
<%
  if (cultureTag != null && cultureTag != "en-us")
  {
        Response.Write("<link href='AdomoCss." + cultureTag + ".css' type='text/css' rel='Stylesheet' />");
  }
    
%>
</asp:PlaceHolder>

Open in new window

0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…
If you are looking for an automated tool which can generate reports for Outlook emails and other items from PST file, then you can go for Kernel PST Reporter tool. The reports which are created by this tool are helpful to analyze and understand PST …

569 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question