0

我在尝试渲染<table>父容器内部时遇到问题,但 MVC3 Razor 总是渲染容器标签的外部。这在尝试通过 Javascript 控制外部父容器时会导致问题。

剃刀示例:

<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,表格总是呈现在容器标签之外!谁能解释我做错了什么?我应该如何编码 Razor 语法以在这些标签内正确添加表格?

4

1 回答 1

1

当您在 Firebug 中查看输出时,正在发生的事情是在浏览器引擎解析它之后,您会看到 html 的“有效”视图。在 HTML5 中,许多标签不需要显式关闭。如果您在另一个无效的标签“内部”包含一个标签(例如跨度内的表格),浏览器会假定您正在使用未关闭的跨度标签,因此它会在启动表格标签之前自动为您关闭它。

这里最简单的解决方法是不“包装”表格,或者用 HTML5 认为有效的东西来包装它,例如节标记。

另一种选择是回到 XHTML1.1,其中表格在 div 内有效(但在跨度内无效)。此外,XHTML 需要明确的结束标记,因此这种行为不会出现在那里。(对于 XHTML5 也是一样,尽管在 XHTML5 中用 div 包装表格仍然无效)

查看原始源代码会发现 Razor 并没有真正改变这里的任何东西。它是浏览器。不过,很高兴看到这一点;所以你知道浏览器期待什么以及它如何处理你发送的内容。

于 2012-09-09T15:56:03.547 回答