将 List<int> 从 actionlink 传递到控制器方法
Pass List<int> from actionlink to controller method
在我的控制器中我有这个:
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
有没有办法将整数列表作为路由值发送到控制器方法?
它不可能直接,但你可以用 Json
如果我有 List<int>
ViewBag.lstIWantToSend= new List<int> {1, 2, 3, 4};
所以我的观点是
@Html.ActionLink(count, "ActionName", new { lstApps = Json.Encode(ViewBag.lstIWantToSend) }, null)
Json.Encode
会将 List<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 string
转换回 List<int>
MVC.net 遵循您发送的所有内容都是单个模型的约定。因此,如果您想发送一个对象列表(比如一个人员列表)——最好首先将它们从客户端序列化到服务器,然后再从服务器到客户端。
在简单的事情上,就像@BryanLewis 所说的那样,您可以自己用 CSV 序列化它(到字符串),然后在接收时将其拆分回 Action/Client。
对于更复杂的事情,你有(客户端)像 AngularJS 和它优秀的 JSON.stringify(anyObject)/JSON.parse(anyString) 你有(服务器端)Newton.Soft '出色的 JsonConvert.Deserialize>(myJsonString) 或 JsonConvert.Serialize(someObject)。 json 的好处是它非常透明。
记住 - HTTP 不喜欢对象。但是来回传递字符串很棒。
在我的控制器中我有这个:
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
有没有办法将整数列表作为路由值发送到控制器方法?
它不可能直接,但你可以用 Json
如果我有 List<int>
ViewBag.lstIWantToSend= new List<int> {1, 2, 3, 4};
所以我的观点是
@Html.ActionLink(count, "ActionName", new { lstApps = Json.Encode(ViewBag.lstIWantToSend) }, null)
Json.Encode
会将 List<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 string
转换回 List<int>
MVC.net 遵循您发送的所有内容都是单个模型的约定。因此,如果您想发送一个对象列表(比如一个人员列表)——最好首先将它们从客户端序列化到服务器,然后再从服务器到客户端。
在简单的事情上,就像@BryanLewis 所说的那样,您可以自己用 CSV 序列化它(到字符串),然后在接收时将其拆分回 Action/Client。 对于更复杂的事情,你有(客户端)像 AngularJS 和它优秀的 JSON.stringify(anyObject)/JSON.parse(anyString) 你有(服务器端)Newton.Soft '出色的 JsonConvert.Deserialize>(myJsonString) 或 JsonConvert.Serialize(someObject)。 json 的好处是它非常透明。
记住 - HTTP 不喜欢对象。但是来回传递字符串很棒。