Asp.net mvc 3 MVC3剃须刀台加载在Span/Div/P之外
我遇到了一个问题,我试图在父容器内部呈现Asp.net mvc 3 MVC3剃须刀台加载在Span/Div/P之外,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我遇到了一个问题,我试图在父容器内部呈现,但MVC3 Razor始终呈现容器标记的外部。当试图通过Javascript控制外部父容器时,这会导致问题 例如: <span id="mySpan"> @Html.Action("Table1", "GetMyTable") </span> @动作(“表1”、“GetMyTable”) 输出的HTML: <span id="mySpan"></span> <table> &
,但MVC3 Razor始终呈现容器标记的外部。当试图通过Javascript控制外部父容器时,这会导致问题
例如:
<span id="mySpan">
@Html.Action("Table1", "GetMyTable")
</span>
@动作(“表1”、“GetMyTable”)
输出的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语法以正确地将表添加到这些标记中?当您在Firebug中查看输出时,所发生的事情是,在浏览器引擎解析html后,您看到了html的“有效”视图。 在HTML5中,许多标记不需要显式关闭。如果在另一个无效的标记(如跨距内的表)中包含“内部”标记,则浏览器会假定您正在使用未关闭的跨距标记,因此在启动表标记之前,它会自动为您关闭该标记 这里最简单的修复方法是要么不“包装”表,要么用HTML5认为有效的东西包装它,比如节标记 另一个选项是返回XHTML1.1,其中一个表在div中有效(但不在span中)。而且,XHTML需要显式的结束标记,所以这种行为不会出现在那里。(对于XHTML5也是如此,尽管在XHTML5中用div包装表仍然无效)
查看原始资料会发现Razor并没有改变任何东西;它是浏览器。不过,看到这一点很好;因此,您知道浏览器期望的内容以及它如何处理您发送的内容。您如何查看输出?我敢打赌你看到的是浏览器对HTML5的“更正”视图,其中span标记会自动结束,因为其中包含无效的内容(例如表标记)。这意味着您正在查看的是有效输出,而不是文本输出,它不应该从您期望的(无效)输出更改。也就是说:我从未见过Razor试图以这种方式更改您的文本输出,因此我更倾向于认为这是浏览器“修复”HTML的情况。@AndrewBarber-好,未意识到表在div或span中无效。为了回答你的问题,我在Firefox中通过Firebug查看HTML。有没有办法在div或其他html父级中获取一个表以用于javascript控制?它应该放在div中就可以了。但是,它在span或p中无效。使用viee源直接从浏览器查看;萤火虫正是我注意到的。(在本例中也很好地看到了这一点;如果html无效,css将不会像您认为的那样应用)@AndrewBarber-好吧,我想这不是一个剃刀问题,而是HTML5问题。Yikes,当人们需要控制一个包含表的HTML块时,他们会怎么做?这是我过去经常做的事情。你知道,就像前天一样。