How do I include thead in a runat=“server” table element?

萝らか妹 提交于 2019-12-03 15:14:04

问题


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?

  • Removing the runat="server" attribute
  • Removing the thead element
  • Changing it to an asp:table element

Bonus 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.


回答1:


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.




回答2:


For partial solution you can move that <th> front-end code to the back-end code. That should take care of the compilation problem. Don't know what to do about <tbody> tags though. If you view HTML of your page as it stands now, I doubt that they render anyway. Here is why.




回答3:


Microsoft has confirmed this is a bug. They will create a hot fix for it, and include the fix in the next service pack. It doesn't sound like this is a high priority, so it will probably take a while for the hot fix.

2012-10-01 Update: Microsoft support contacted me and said this will be fixed in an upcoming hot fix "soon".

2012-11-28 Update: Visual Studio 2012 Update 1 does not fix the problem.




回答4:


Simple solution remove tags tbody and thead, for me worked.




回答5:


I don't have VS 2012; right now but you should try following things

  1. Can you verify changing DOCTYPE. (to transitional, frame-set, 1.1 or html 5 etc)
  2. Put the whole table inside asp:placeholder



回答6:


Yes Its a bug in Visual Studio 2012,Applying the patch from below mentioned link has worked for me: http://www.microsoft.com/en-us/download/details.aspx?id=36359

Removing the tag won't solve it out for a current/migrating running project. In that way we have to change each and every aspx page.



来源:https://stackoverflow.com/questions/12148825/how-do-i-include-thead-in-a-runat-server-table-element

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!