asp.net – Visual Studio 2010和Visual Studio 2012中的col,colgroup,tbody和thead throws编译错误的HTML表标记

前端之家收集整理的这篇文章主要介绍了asp.net – Visual Studio 2010和Visual Studio 2012中的col,colgroup,tbody和thead throws编译错误的HTML表标记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个.NET 3.5网站,其中包含col,colgroup,tbody和thead标签.这是具有runat =“server”属性的服务器端标签.该表在Visual Studio 2010中正常工作,但在安装Visual Studio 2012和.NET 4.5之后,此标记现在无法在Visual Studio 2010和Visual Studio 2012中进行编译(我同时尝试过).以下是编译器错误被抛出:
  • The best overloaded method match for ‘System.Web.UI.HtmlControls.HtmlTableRowCollection.Add(System.Web.UI.HtmlControls.HtmlTableRow)’
    has some invalid arguments
  • Argument ‘1’: cannot convert from ‘System.Web.UI.HtmlControls.HtmlGenericControl’ to
    ‘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>@H_403_15@ 
 

有没有人知道如何解决这个问题,以便我们可以让网站编译并继续工作?

解决方法

在Visual Studio 2012和.NET 4.5的安装之后,这似乎是一个未记录的破坏的网站更改.在Microsoft: http://msdn.microsoft.com/en-us/library/hh367887.aspx记录的.NET 4.5更改中,我无法找到对此的引用

在研究了这个问题之后,以下似乎是破碎表标签的可能解决方案.

>卸载Visual Studio 2012和.NET 4.5.参考:Server side HTML table with tbody not compiling in ASP.NET 4.5

我意识到这不一定是一个理想的解决方案,但是如果下面的其他解决方案都不能轻易实现,那么你可能没有别的选择.另外,只是因为这是第一个条目,这不是我推荐的主要解决方案.这只是一个选择.
>将您的网站转换为Web应用程序.在使用Web应用程序时,使用runat =“server”的表格会显示为编译文件.

执行此转换还有其他好处,例如使Web应用程序中的代码更容易编写单元测试.但是,您需要评估从网站转换为Web应用程序所涉及的工作,您需要说服您的老板和同事,您需要进行此更改.
>检查表中的服务器端代码(页面/控件后面的代码).您是否在服务器端代码中使用控件?如果没有,请删除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>@H_403_15@ 
 

>您正在使用服务器端代码中的控件.删除col和colgroup标签,并将列样式移动到表的第一行的td或th单元格中. (列宽和样式从表的第一行继承,因此在第一个单元格上设置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>@H_403_15@ 
 

>转换为使用< asp:Table>标签与< asp:TableHeaderRow>和< asp:TableRow>控制.参考:How to create thead and tbody in ASP.NET Table?

猜你在找的asp.Net相关文章