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 に答える