asp.net - usa - ¿Cómo incluyo thead en un elemento de tabla runat="server"?
upgrade visual studio 2013 project to 2017 (6)
Estoy actualizando un proyecto de sitio web grande de Visual Studio 2010 a 2012. A lo largo de mi proyecto, tengo elementos de table
con el atributo runat="server"
. Muchos de estos tienen elementos de thead
dentro de ellos. Cuando lo abro en 2012 y trato de compilar, aparece el siguiente error:
Value of type ''System.Web.UI.HtmlControls.HtmlGenericControl'' cannot be converted to ''System.Web.UI.HtmlControls.HtmlTableRow''
Quitar el atributo runat="server"
o comentarlo thead
arregla. Comentar solo el elemento tr
dentro de thead
no lo arregla. Aquí hay un ejemplo simplificado que reproduce el problema:
<%@ 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>
El error se produce cuando table
abre el elemento de la table
.
¿Cómo puedo solucionar esto sin hacer uno de los siguientes?
- Eliminando el atributo
runat="server"
- Extracción del elemento
thead
- Cambiándolo a un elemento
asp:table
El bono de hasta votar por alguien que explica lo que 2012 está haciendo de manera diferente es lo que está causando esto.
ACTUALIZAR:
El problema no ocurre en una aplicación web, solo en un sitio web.
El proyecto no se puede actualizar, solo mi entorno de desarrollo. En ambos casos, estoy usando el framework 4.0.
Intenté usar el marco 4.5, pero no sirvió de nada.
10 de septiembre de 2012: Tengo un caso abierto con soporte de Microsoft. Su equipo de desarrollo lo está investigando.
24 de octubre de 2012: Como .NET 4.5 reemplaza a 4.0, ya no puedo compilar en VS 2010. El problema que estoy experimentando es puramente .NET, no Visual Studio.
La solución para este problema está disponible ahora. http://support.microsoft.com/kb/2750149 para Windows 8 y http://support.microsoft.com/kb/2750147 para la plataforma Windows 7.
Microsoft ha confirmado que esto es un error. Ellos crearán una solución para ello e incluirán la corrección en el próximo service pack. No suena como si esto fuera una prioridad alta, por lo que probablemente tomará un tiempo para la corrección.
Actualización del 10-10-2012: el soporte de Microsoft se comunicó conmigo y dijo que esto se solucionará en una próxima solución "pronto".
2012-11-28 Update: Visual Studio 2012 Update 1 no soluciona el problema.
No tengo VS 2012; En este momento, pero debes intentar seguir las cosas
- ¿Se puede verificar el cambio de DOCTYPE? (a transicional, conjunto de cuadros, 1.1 o html 5, etc.)
- Pon toda la mesa dentro de asp: placeholder
Para una solución parcial, puede mover ese <th>
código de front-end al código de back-end. Eso debería encargarse del problema de la compilación. Sin embargo, no sé qué hacer con las etiquetas <tbody>
. Si ves el HTML de tu página tal como está ahora, dudo que se muestren de todos modos. Aquí es por qué.
Sí. Es un error en Visual Studio 2012. La aplicación del parche del siguiente enlace mencionado me ha funcionado: http://www.microsoft.com/en-us/download/details.aspx?id=36359
La eliminación de la etiqueta no lo resolverá para un proyecto en ejecución / migración actual. De esa manera tenemos que cambiar todas y cada una de las páginas aspx.
Solución simple quitar las etiquetas tbody y thead, para mí funcionó.