0

IEnumerableを含むviewModelを備えたコントローラーがあり、jQueryコントロールによって構築されたフォームがあります。

コントロールにポストバックするときに、IEnumerableに収集された非表示フィールドのすべての行を収集したいと思います。

ビューモデルの例を次に示します。

public class MyViewModel
{
    public IEnumerable<SelectListItem> GeneratedItems { get; set; }
}

jQueryでは、次のような非表示のフィールドを持つテーブルに行を作成します。

<input class="hiddenValue" name="' + controlName + '_guid" type="hidden" value="' + guid + '"></input>

そして、コントローラーのPOSTメソッドで、投稿されたモデルを受け取ります。

これが私の問題です...IEnumerabeを受け入れると、すべてのGUIDが正しく収集されます。しかし、IEnumberableを返すことができませんでした。

2つの非表示フィールドを追加して、次のようなものを試しました。

<input class="hiddenValue" name="' + controlName + '.Text" type="hidden" value="' + text + '"></input>

<input class="hiddenValue" name="' + controlName + '.Value" type="hidden" value="' + guid + '"></input>

しかし、それは空の配列を返します。

誰かが私が欲しいオブジェクトのリストを私に与えるように私が隠されたフィールドを配置するのを手伝ってもらえますか?

どうもありがとう

4

2 に答える 2

0

Darin Dimitrovの例を見てください。MVC でどのように実行する必要があるかが示されています。()主なアイデアは、すべての入力にインデックスが含まれ、モデルバインダーがIEnumerable自動的に入力することです。

于 2012-09-20T17:56:16.290 に答える
0

これを実現するには、ポスト コントローラーを次のようにする必要があります。

[HttpPost]
public ActionResult YourAction(YourViewModel obj, FormCollection FC)
{
    List<SelectListItem> Items = new List<SelectListItem>();

    foreach(var key in FC.AllKeys.Where(K => K.EndsWith(".Text"))
    {
        SelectListItem SI = new SelectListItem { Text = key , Value = FC[key] };
        Items.Add(SI);
    }

    obj.GeneratedItems = Items.AsEnumerable();

    return View(obj);

}

これが役立つことを願っています!!

于 2012-09-20T17:48:41.567 に答える