我正在将一个大型网站项目从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。
答案 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;现在,你应该尝试以下事情
答案 5 :(得分:-1)
是它是Visual Studio 2012中的一个错误,应用下面提到的链接补丁对我有用: http://www.microsoft.com/en-us/download/details.aspx?id=36359
删除标记不会解决当前/迁移运行项目的问题。这样我们就必须改变每个aspx页面。