3

私はjqueryを使用してajax経由でデータをPOSTしています.chromeツールでは、データが次のように送信されていることを示しています:

PermssionArray[0][Permitted]:false
PermssionArray[0][Id]:2
PermssionArray[1][Permitted]:true
PermssionArray[1][Id]:3
PermssionArray[2][Permitted]:true
PermssionArray[2][Id]:4

私のコントローラーは次のようなものです:

  public ActionResult UpdatePermissions(PermSet[] PermssionArray)

そして、私の PermSet クラスは次のようになります。

  public class PermSet
        {
            public int Id { get; set; }
            public bool Permitted { get; set; }
        }

コントローラーでブレークポイントを指定すると、PermssionArray 配列に 3 つの項目がありますが、値はすべて id = 0、許可 = false です。

これを修正するには、何を変更する必要がありますか?

4

1 に答える 1

5

リストは ASP.Net MVC では非常に奇妙で、サーバーにデータを取得するオプションがあります。

  1. ASP.NET MVC で既定のモデル バインドを使用します。これには、特定の形式でポストバックするようにモデルを変更する必要があります。これに関する Phil Haack の投稿をチェックしてください。これは機能しますが、リストがたくさんある場合は面倒になる可能性があります。 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

  2. 2 番目のオプションは、jQuery を使用して投稿を回避し、フォームを JSON ドキュメントにシリアル化し、それをサーバーに POST することです。オプション 2 ははるかに簡単ですが、直接の POST / リダイレクト アクションではなく、ajax リクエストを処理する必要があります。

    • JSON.stringify(モデル) を使用
    • 成功時にリダイレクトする次のページを含む応答を返す
    • エラーメッセージを含む応答を返す

jQuery と $.ajax メソッドの使い方を知っていることを前提としています。

ページの複雑さが増し始めると、オプション 2 に傾倒し始めました。唯一の欠点は、本当に優れたクライアント ストーリーが必要なことです。ko.toJSON を使用してフォームを JSON に変換できるため、knockout.js の使用を検討してください。

何かについて詳しく説明してほしい場合はお知らせください。

于 2013-07-22T13:32:10.757 に答える