Подтвердить что ты не робот

Как включить thead в элемент таблицы runat = "server"?

Я обновляю большой проект веб-сайта из 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 году по-другому, что вызывает это.

UPDATE:

Проблема не возникает в веб-приложении, только на веб-сайте.

Проект фактически не обновляется, а только моя среда разработки. В обоих случаях я использую фреймворк 4.0

Я попытался использовать фреймворк 4.5, но это не помогло.

10 сентября 2012 года: У меня есть открытый случай с поддержкой Microsoft. Их команда разработчиков изучает его.

Октябрь 24, 2012: Поскольку .NET 4.5 заменяет 4.0, я больше не могу компилировать в VS 2010. Проблема, которую я испытываю, - это чисто .NET - не Visual Studio.

4b9b3361

Ответ 2

Microsoft подтвердила, что это ошибка. Они создадут для него исправление и включают исправление в следующий пакет обновления. Это не похоже на то, что это высокий приоритет, поэтому, вероятно, потребуется некоторое время для исправления.

2012-10-01 Обновление: Поддержка Microsoft связалась со мной и сказала, что это будет исправлено в ближайшем горячем исправлении "скоро".

2012-11-28 Обновление: Обновление Visual Studio 2012 1 не устраняет проблему.

Ответ 3

Для частичного решения вы можете перенести этот код <th> front-end на внутренний код. Это должно заботиться о проблеме компиляции. Не знаю, что делать с тегами <tbody>. Если вы просматриваете HTML-страницу своей страницы в ее нынешнем виде, я сомневаюсь, что они все равно будут отображаться. Вот почему.

Ответ 4

Простое решение удаляет теги tbody и thead, для меня это работает.

Ответ 5

У меня нет VS 2012; прямо сейчас, но вы должны попробовать следующие вещи.

  • Вы можете проверить изменение DOCTYPE. (переходному, фрейму, 1.1 или html 5 и т.д.).
  • Поместите всю таблицу внутри asp: placeholder

Ответ 6

Да Его ошибка в Visual Studio 2012, применение патча из указанной ниже ссылки работало на меня: http://www.microsoft.com/en-us/download/details.aspx?id=36359

Удаление тега не решит его для текущего/мигрирующего запущенного проекта. Таким образом, мы должны изменить каждую страницу aspx.