I'm upgrading a big web site project from Visual Studio 2010 to 2012. Throughout my project, I have table
elements with the runat="server"
attribute. Many of these have thead
elements inside of them. When I open it in 2012 and and try to build, I get the following error:
Value of type 'System.Web.UI.HtmlControls.HtmlGenericControl' cannot be converted to 'System.Web.UI.HtmlControls.HtmlTableRow'
Removing the runat="server"
attribute or commenting out thead
fixes it. Commenting out only the tr
element inside of thead
does not fix it. Here is a simplified example that reproduces the problem:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table id="Example" runat="server">
<thead>
<tr>
<th>test</th>
</tr>
</thead>
</table>
</div>
</form>
</body>
</html>
The error occurs where the table
element opens.
How can I fix this without doing one of the following?
runat="server"
attribute thead
elementasp:table
elementBonus up vote for someone who explains what 2012 is doing differently that is causing this.
UPDATE:
The problem does not occur in a web app, only in a web site.
The project isn't actually be upgraded, just my development environment. In both cases, I'm using the 4.0 framework
I tried using the 4.5 framework, but it didn't help.
Sept 10th, 2012: I have an open case with Microsoft support. Their dev team is looking into it.
Oct. 24, 2012: Since .NET 4.5 replaces 4.0, I can no longer compile in VS 2010 also. The problem I am experiencing is purely .NET - not Visual Studio.
Fix for this issue is available now. http://support.microsoft.com/kb/2750149 for windows 8 and http://support.microsoft.com/kb/2750147 for Windows 7 platform.