1

私はMVCビューに出力するためのデータセットを与えられている状況にあります。送信後の帰りにモデルバインダーにそれを受け取らせる方法を見つけるのに本当に苦労しています。私はこのようなものを持っています...

public ActionResult TestData()
{
    DataSet data = new DataSet("DS");

    DataTable table = new DataTable("DT");
    data.Tables.Add(table);

    table.Columns.Add("ID", typeof (int));
    table.Columns.Add("Name", typeof (string));

    table.Rows.Add(1, "John");
    table.Rows.Add(2, "Mark");
    table.Rows.Add(3, "Paul");
    table.Rows.Add(4, "Chris");

    return View(data);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestData(DataSet data)
{
    return View(data);
}

このページでは、入力要素に対してさまざまな命名スキームを試しましたが、役に立ちませんでした。これも可能ですか。可能であればビューモデルタイプを使用しますが、残念ながらこれは完全に動的な構造であり、データセットを使用するのが最も自然な方法です。

4

1 に答える 1

2

私の場合は、すべて同じ名前属性を持つ非表示のフィールドに行をシリアル化します。多分何かのような

<input type="hidden" name="dsRows" value="[id]_[name]" />

次に、2番目のアクション(POSTを受け入れるアクション)で、パラメーターとしてstring[]を受け入れます。次に、小さなLINQクエリなどを使用して、配列をデータセットに「分解」できます。

(注:これを具体的にテストしていませんが、この戦略を数回使用しました)

于 2009-12-08T12:19:24.470 に答える