如何在runat =“server”表元素中包含thead?

时间:2012-08-27 20:05:44

标签: asp.net visual-studio-2010 upgrade visual-studio-2012 web-site-project

我正在将一个大型网站项目从Visual Studio 2010升级到2012年。在整个项目中,我有table属性runat="server"元素。其中许多都有thead个元素。当我在2012年打开它并尝试构建时,我收到以下错误:

Value of type 'System.Web.UI.HtmlControls.HtmlGenericControl' cannot be converted to 'System.Web.UI.HtmlControls.HtmlTableRow'

删除runat="server"属性或注释掉thead修复了该问题。只注释tr内的thead元素并不能解决问题。以下是重现问题的简化示例:

<%@ 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>

错误发生在table元素打开的位置。

如何在不执行以下任何操作的情况下解决此问题?

  • 删除runat="server"属性
  • 删除thead元素
  • 将其更改为asp:table元素

为那些解释2012年正在采取不同行动导致此问题的人投票。

更新

仅在网站中,网络应用中不会出现此问题。

项目实际上并没有升级,只是我的开发环境。在这两种情况下,我都在使用4.0框架

我尝试使用4.5框架,但它没有帮助。

2012年9月10日: 我有一个微软支持的开放案例。他们的开发团队正在研究它。

十月2012年4月24日: 由于.NET 4.5取代了4.0,我也无法再在VS 2010中编译。我遇到的问题纯粹是.NET - 而不是Visual Studio。

6 个答案:

答案 0 :(得分:4)

现在可以修复此问题。 适用于Windows 8的http://support.microsoft.com/kb/2750149和适用于Windows 7平台的http://support.microsoft.com/kb/2750147

答案 1 :(得分:3)

微软已经确认这是一个错误。他们将为它创建一个热修复程序,并将修复程序包含在下一个Service Pack中。听起来这不是一个高优先级,因此热修复可能需要一段时间。

2012-10-01更新: 微软的支持与我联系,并表示将在即将推出的热点修复中“修复”。

2012-11-28更新: Visual Studio 2012 Update 1无法解决问题。

答案 2 :(得分:3)

对于部分解决方案,您可以将<th>前端代码移动到后端代码。 这应该照顾编译问题。 不知道如何处理<tbody>标签。 如果您现在查看页面的HTML,我怀疑它们无论如何都会呈现。 Here is why.

答案 3 :(得分:1)

简单的解决方案删除标签tbody and thead,为我工作。

答案 4 :(得分:-1)

我没有VS 2012;现在,你应该尝试以下事情

  1. 您可以验证更改DOCTYPE吗? (过渡,框架,1.1或html 5等)
  2. 将整个表放在asp:placeholder

答案 5 :(得分:-1)

是它是Visual Studio 2012中的一个错误,应用下面提到的链接补丁对我有用: http://www.microsoft.com/en-us/download/details.aspx?id=36359

删除标记不会解决当前/迁移运行项目的问题。这样我们就必须改变每个aspx页面。