19

大規模な Web サイト プロジェクトを 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アプリでは発生せず、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

この問題の修正は現在利用可能です。 Windows 8 の場合はhttp://support.microsoft.com/kb/2750149、Windows 7 プラットフォームの場合はhttp://support.microsoft.com/kb/2750147です。

于 2013-01-10T03:59:49.970 に答える
3

Microsoftは、これがバグであることを確認しています。彼らはそれに対するホットフィックスを作成し、次のサービスパックにそのフィックスを含めます。これは優先度が高いようには思えないので、ホットフィックスにはおそらくしばらく時間がかかります。

2012-10-01更新:Microsoftサポートから連絡があり、これは今後のホットフィックスで「間もなく」修正されるとのことです。

2012-11-28更新:Visual Studio 2012Update1では問題は修正されません。

于 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 の変更を確認できますか。(transitional、frame-set、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 に答える