2017-03-15 6 views
2

私はこの持っている:パスリスト<int> ActionLinkのからコントローラメソッドに私のコントローラで

ViewBag.lstIWantToSend= lstApps.Select(x => x.ID).ToList(); // creates a List<int> and is being populated correctly 

私の見解では、私が持っているので、私は...別のコントローラにそのリストを渡したい:

@Html.ActionLink(count, "ActionName", new { lstApps = ViewBag.lstIWantToSend }, null) 

コントローラ内のメソッド:

public ActionResult ActionName(List<int> lstApps) // lstApps is always null 

int値のリストをコントローラに送信する方法はありますかそれとも?

+0

にあなたがこれは本当にオブジェクトのリストではなく、int型のリストだけ 'Html.ActionLink' –

+0

を経由して複合型をこのように渡すことはできません変換します。それをintのcsv文字列に変換して送信し、受信したアクションを解析します。 –

答えて

3

直接そのことはできませんが、私はList<int>

ViewBag.lstIWantToSend= new List<int> {1, 2, 3, 4}; 

を持っている場合はJsonでそれを行うことができますので、私の見解では

@Html.ActionLink(count, "ActionName", new { lstApps = Json.Encode(ViewBag.lstIWantToSend) }, null) 

Json.Encodeのようなものがjson string

List<int>を変換するだろうActionNameはこのようになります

public ActionResult ActionName (string lstApps) 
     { 
      List<int> result = System.Web.Helpers.Json.Decode<List<int>>(lstApps); 

      return View(); 

     } 

Json.Decode<List<int>>このjson stringはバックList<int>

+0

恐ろしい!私はjsonについてはあまり知らないが、それはそれをした。あなたが私に尋ねる気にならないなら、どうやってそのようにするのか分かりましたか? –

+1

jsonはweb apiでオブジェクトを送信するのにほとんど使用されますので、htmlはList をエンコードしないので同じことができますが、jsonがオブジェクトをstringに変換する理由 – Usman

関連する問題