まず、table
オブジェクトをシリアライズすることはできません:
HTML:
<table id="myTable">
<tr>
<td><input id='one' name='one' value='blah' /></td>
<td><input id='two' name='two' value='moreblah' /></td>
</tr>
</table>
JavaScript:
var serialized = $("#myTable").serialize();
debugger;
デバッガーでコードが一時停止すると、空の文字列でserialized
あることがわかります。""
MVC はこれを IEnumerable にモデル バインドする方法がわからないため、null になります。
一方、これを行うと:
var serialized = $("#one, #two").serialize();
debugger;
serialized
に等しくなり"one=blah&two=moreblah"
ます。
次に、実際に a にバインドしている場合form
、テーブル内のすべての入力要素が正しくシリアル化されます。ただし、 にモデルバインドしようとしているため、入力要素の名前は非常に重要ですIEnumerable<CafePlaced>
。リストへのモデル バインディングに関する Phil Haack によるこの記事をお読みください: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
正しく行わないと、MVC はバインドをモデル化する方法を認識できず、パラメーターは null として渡されます。