0

Fpr,jqueryを使用してシリアル化し、サーバーに投稿します。List<T>アクション メソッドで、またはのorIEnumerable<T>を取得しようとしましたobjectが、List<T>orIEnumerable<T>は null です。それをメソッドに投稿する方法なので、リストまたはとして取得しIEnumerableます。

var div = $("#TableForm").serialize();
$.post("../Controller/Action?Mode=" + Mode, div , function () { });

フォームをシリアル化し、シリアル化は OK です。問題はアクションのみにあります-私はnullになりました、助けてください

4

1 に答える 1

2

まず、tableオブジェクトをシリアライズすることはできません:

HTML:

​&lt;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 として渡されます。

于 2012-12-15T19:56:47.083 に答える