我遇到问题,我尝试在父容器中呈现<table>
,但MVC3 Razor总是呈现容器标记的外部。当尝试通过Javascript控制外部父容器时,这会导致问题。
Razor示例:
<span id="mySpan">
@Html.Action("Table1", "GetMyTable")
</span>
输出的HTML:
<span id="mySpan"></span>
<table>
<thead><tr><th>Header</th></tr></thead>
<tbody>
<tr><td>Foo</td></tr>
<tr><td>Bar</td></tr>
</tbody>
</table>
无论我尝试将表格粘贴到哪个父容器中,div,span,p,表总是呈现OUTSIDE容器的标签!谁能解释我做错了什么?我应该如何编写Razor语法以在这些标记内正确添加表?
答案 0 :(得分:1)
当您在Firebug中查看输出时,正在发生的事情是您在浏览器引擎解析后看到html的“有效”视图。 在HTML5中,许多标签不需要显式关闭。如果在另一个无效的内部标记“内部”(如跨度内的表),则浏览器假设您正在使用未封闭的span标记,因此在启动表标记之前会自动为您关闭它。
这里最简单的解决方法是不要“封装”表格,或者用HTML5认为有效的东西包装它,例如节标记。
另一种选择是返回XHTML1.1,其中表在div内有效(但不在span内)。此外,XHTML需要显式的结束标记,因此这种行为不会显示在那里。 (XHTML5也是一样,但在XHTML5中用div包装表仍然无效)
查看原始来源会发现Razor在这里不会改变任何东西;它是浏览器。不过,很高兴见到这一点;所以你知道浏览器的期望以及它如何处理你发送的内容。