2012-05-04 16 views
1

オブジェクトの一般的なリストをビューページからアクションリンク経由でアクションメソッドに渡しています。アクションリンクは、このアクションメソッドに渡されたリストには要素がありません

@Html.ActionLink("Click here", "Foo", new { a = Model.A }) 

のように見えるアクションメソッドのシグネチャは、問題がある

public ActionResult Foo(List<foo> a) 

である私は、このリストの中に二つの要素があることをはっきりと見ることができ、デバッガでこのコードを実行するとビューが実行メソッドに到達すると、リストに要素がありません。これはなぜでしょうか?

私は「ActionResultに投稿する」ことを提案しました。これは何を意味するのでしょうか?それが解決策ならば、それは素晴らしいです。

+1

Model.A何ですかこんにちは?? – walther

+0

List 型のビューのモデルのプロパティで、2つの要素を含むものです。 –

+1

そのような複雑なタイプのリストを渡すことはできません。あなたは、A)アクションリンクの代わりにリストを再投入するのに必要な基本パラメータを渡すか、またはActionResultに投稿する必要があります。 – mattytommo

答えて

0

あなたはどのような要素を渡します、これを試みることができる?[0] FOO &を= [1] =バー& [2] =

@{ 
    var dict = new RouteValueDictionary(); 
    for (int i = 0; i < Model.A.Count; i++) 
    { 
     dict.Add("a[" + i + "]", Model.A[i]); 
    } 
} 
@Html.ActionLink("Click here", "Foo", dict); 
+0

問題は、多くの値があり、それ自体が複雑なタイプなので、RouteValueDictionary内にRouteValueDictionaryが必要であると思います。 URLをあまり汚染しない、これを行う簡単な方法はありませんか?私はTempDataを使用できますか? –

+1

あなたは何をしようとしていますか?要求の間にかなりの量の状態を保持しようとしているだけの場合は、クッキーに格納するか、隠しフィールドがあるフォームを作成して自分自身にPOSTするか(@mattytommoはオプションB)。 – bhamlin

+0

さて、私は何をしようとしているのです。アクションリンクは、ユーザーがテーブル内のデータをCSV形式にエクスポートするためにクリックするリンクです。これが起こるには、データを取得するテーブルの行が必要です。今では、複数の異なるクエリがあることを意味する複数のテーブルで同じメソッドが使用されるため、Actionメソッドでこれらの行を生成することはできません。 –

関連する問題