Jef*_*eff 12 asp.net visual-studio-2010 .net-3.5 .net-4.5 visual-studio-2012
我有一个.NET 3.5网站,其中包含一个包含col,colgroup,tbody和thead标记的表标记.这是具有runat ="server"属性的服务器端标记.此表在Visual Studio 2010中运行良好,但在安装Visual Studio 2012和.NET 4.5之后,此标记现在无法在Visual Studio 2010和Visual Studio 2012中编译.(我尝试了两种.)以下是编译器错误正在抛出:
- '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>
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题,以便我们可以让网站编译并继续工作?
在安装Visual Studio 2012和.NET 4.5之后,这似乎是对网站的无证件更改.我无法找到在微软记录的.NET 4.5更改此引用: http://msdn.microsoft.com/en-us/library/hh367887.aspx
在研究问题之后,以下似乎是破碎表标签的可能解决方案.
卸载Visual Studio 2012和.NET 4.5.参考:服务器端HTML表,其中tbody未在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>
Run Code Online (Sandbox Code Playgroud)您正在服务器端代码中使用该控件.删除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>
Run Code Online (Sandbox Code Playgroud)转换为使用<asp:Table>
标签<asp:TableHeaderRow>
和<asp:TableRow>
控件.参考: 如何在ASP.NET表中创建thead和tbody?
归档时间: |
|
查看次数: |
9027 次 |
最近记录: |