19

我正在将一个大型网站项目从 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 年的不同做法导致此问题的人进行额外投票。

更新:

该问题不会出现在 Web应用程序中,只会出现在网站中。

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

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

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

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

4

6 回答 6

4

现已提供此问题的修复程序。 http://support.microsoft.com/kb/2750149用于 Windows 8 和http://support.microsoft.com/kb/2750147用于 Windows 7 平台。

于 2013-01-10T03:59:49.970 回答
3

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

2012 年 10 月 1 日更新:Microsoft 支持人员联系了我,并说这将在即将到来的热修复中“很快”修复。

2012-11-28 更新:Visual Studio 2012 Update 1 没有解决这个问题。

于 2012-09-12T20:55:39.243 回答
3

对于部分解决方案,您可以将该<th>前端代码移至后端代码。那应该解决编译问题。虽然不知道如何处理<tbody>标签。如果您现在查看页面的 HTML,我怀疑它们是否会呈现。 这就是为什么。

于 2012-10-04T18:14:56.200 回答
1

简单的解决方案删除标签 tbody 和 thead,对我来说有效。

于 2012-11-01T11:03:46.103 回答
-1

我没有VS 2012;现在,但您应该尝试以下操作

  1. 你能验证更改 DOCTYPE。(过渡、框架集、1.1 或 html 5 等)
  2. 将整个表格放入 asp:placeholder
于 2012-09-04T14:00:20.457 回答
-1

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

对于当前/正在迁移的正在运行的项目,删除标签不会解决它。这样,我们必须更改每个 aspx 页面。

于 2013-09-26T06:26:09.027 回答