0

次のリクエストをasp.net-MVC3アプリケーションに投稿しています:

Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:240
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With:XMLHttpRequest
...
EntityName=Package&Columns[0].Id="Ordering"&Columns[0].Hidden=false&Columns[0].Width="250px"&Columns[1].Id="SubItemId"&Columns[1].Hidden=true&Columns[1].Width="250px"&

次のアクション メソッドは、前のリクエストのフォーム データにバインドすることになっています。

public ActionResult Scene(GridScene scene) 
{
...
}

ここで、GridScene オブジェクトは次の 2 つのプロパティで構成されます。

public class GridScene
{
    public string EntityName { get; set; }
    public GridColumns[] Columns { get; set; }
}

GridColumns オブジェクトは、次の 3 つのプロパティで構成されます。

public class GridColumns
{
    public string Id { get; set; }
    public bool Hidden { get; set; }
    public string Width { get; set; }
}

最初のプロパティ (EntityName) は適切にバインドされていますが、GridColumns[] は常に null です。誰かがそれをバインドするのを手伝ってくれますか?

PS:プロパティとリストを持つオブジェクトへの同様の質問 バインディング

4

2 に答える 2

0

あなたのコードを mvc3 アプリケーションで試してみたところ、問題なく動作しました。私は次のようなgetリクエストをしました:

シーン?

EntityName=Package&Columns[0].Id="Ordering"&Columns[0].Hidden=false&Columns[0].Width="250px"&Columns[1].Id="SubItemId"&Columns[1].Hidden=true&Columns[1] .Width="250px"

デフォルトのモデル バインダーを使用していますか? 常にゼロ インデックスから開始する必要があります。そうしないと、デフォルトのモデル バインダーが配列に入力されません。

于 2013-08-16T13:55:15.733 に答える