2017-03-15 60 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 

有沒有辦法將ints列表作爲路由值發送給控制器me THOD?

+0

你不能將一個複雜類型通過'Html.ActionLink' –

+0

這樣這是不是真的對象的列表,而只是一個整數的列表。只需將它轉換爲一個csv字符串以發送它,然後解析您的接收操作。 –

回答

3

它不是直接可能的,但你可以用Json做,如果我有List<int>

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

所以我認爲會是這樣的

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

Json.EncodeList<int>轉換爲json string

ActionName將會是這樣的

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

      return View(); 

     } 

Json.Decode<List<int>>將把這一json stringList<int>

+0

太棒了!我對json的瞭解不多,但是那樣做。如果你不介意我問,你是怎麼知道這樣做的? –

+1

json主要用於在web api中發送對象,所以你可以在這裏做同樣的事情,因爲html不編碼列表但它確實識別任何字符串,所以這就是爲什麼json將對象轉換爲字符串 – Usman

相關問題