visual-studio-2010 - 在 Visual Studio 2010和 Visual Studio 2012中,带有 col colgroup tbody和threads的HTML table 标记引发编译错误

  显示原文与译文双语对照的内容
0 0

我有个.NET 3 .5网站用table标记包含col,colgroup,tbody,thead标记。 这是服务器端标记与runat= " 服务器" 属性。 这张桌子中工作正常Visual Studio 2010,但是我安装后Visual Studio 2012和.NET 4 .5 Visual Studio中,这个标记现在无法编译在Visual Studio 2010和2012 。 ( 我尝试过了) 下面是编译器错误throw的:

  • 最匹配的重载方法'System.Web .UI .HtmlControls .HtmlTableRowCollection .Add( System .Web .UI .HtmlControls .HtmlTableRow )'具有一些无效参数
  • 参数'1': 无法从'转换System.Web .UI .HtmlControls .HtmlGenericControl'到'System.Web .UI .HtmlControls .HtmlTableRow'

下面是我所使用的示例:

<table id="TestTable" runat="server">
    <colgroup>
        <col width="30%" />
        <col width="70%" />
    </colgroup>
    <thead>
        <tr>
            <td>Sample header 1</td>
            <td>Sample header 2</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Sample cell 1</td>
            <td>Sample cell 2</td>
        </tr>
        <tr>
            <td>Sample cell 3</td>
            <td>Sample cell 4</td>
        </tr>
    </tbody>
</table>

有人知道如何解决此问题,这样我们可以获取该网站编译并继续工作?

时间:原作者:2个回答

0 0

这似乎是一个未公开的重大更改后的网站的安装Visual Studio 2012和.NET 4 .5 。 我不是找不到引用这.NET 4 .5中的更改通过提高Microsoft : http://msdn .microsoft .com/en us/library/hh367887 aspx

之后似乎研究此问题,以下可能的解决方案到破碎的table标记。

  1. 卸载Visual Studio 2012和.NET 4 .5 。 参考: Server端HTML与tbody表格中未编译ASP .NET 4 .5?

    我意识到这不一定是理想的解决方案,但如果没有一个其他解决方案可以很轻松实现下面,你最后可能别无选择。 此外,仅仅因为这是第一项,你也不是我推荐为主的解决方案。 这只是一个选项。

  2. 将网站转换为web应用程序。 在表中runat= " 服务器" 似乎编译文件在使用web应用程序。

    还有其他好处这样转换,例如更容易编写单元测试对代码在你的web应用程序。 但是,你必须评估工作涉及从网站转换为web应用程序,你需要说服你的老板和同事同事所需要进行此更改,

  3. 检查服务器端代码( 代码后置page/control ) 为表。 你服务器端代码中使用控件? 如果没有,移除runat= " server " 。 然后页面编译得很好

    <table id="TestTable">
        <colgroup>
            <col width="30%" />
            <col width="70%" />
        </colgroup>
        <thead>
            <tr>
                <td>Sample header 1</td>
                <td>Sample header 2</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Sample cell 1</td>
                <td>Sample cell 2</td>
            </tr>
            <tr>
                <td>Sample cell 3</td>
                <td>Sample cell 4</td>
            </tr>
        </tbody>
    </table>
  4. 你正在使用该控件在服务器端代码中。 删除col和colgroup标签和移动该列stylings到td或th表格的第一行的单元格。 ( 列宽和stylings从第一行向下继承表,所以设置width= " 40% " 在第一个单元格,例如,使该列中所有单元格拥有width= " 40% " 。) 删除thead标签和表格中的所有td单元格更改为th单元格( 表头) 。 删除tbody标记。

    <table id="TestTable" runat="server">
        <tr>
            <th width="30%">Sample header 1</td>
            <th width="70%">Sample header 2</td>
        </tr>
        <tr>
            <td>Sample cell 1</td>
            <td>Sample cell 2</td>
        </tr>
        <tr>
            <td>Sample cell 3</td>
            <td>Sample cell 4</td>
        </tr>
    </table>
  5. 转换为使用 <asp:Table>标签, <asp:TableHeaderRow><asp:TableRow>控件。 参考: How中创建thead和tbody ASP .NET Table

原作者:
...