Asp.net mvc 4 通过“System.Collections.Generic.List`1[System.string]”传入ViewBag gets的列表
我有一个到另一个控制器的链接,我想传递一个字符串列表 FirstController.cs 我有表中的记录列表,每行都有复选框,字符串值列表是通过选中复选框来选择的Asp.net mvc 4 通过“System.Collections.Generic.List`1[System.string]”传入ViewBag gets的列表,asp.net-mvc-4,Asp.net Mvc 4,我有一个到另一个控制器的链接,我想传递一个字符串列表 FirstController.cs 我有表中的记录列表,每行都有复选框,字符串值列表是通过选中复选框来选择的 public ActionResult Select(bool isChecked, String id) { var selectList = (List<String>)HttpContext.Session["SelectList"] ?? new List<String>(); if
public ActionResult Select(bool isChecked, String id)
{
var selectList = (List<String>)HttpContext.Session["SelectList"] ?? new List<String>();
if (isChecked && !selectList.Contains(id))
{
selectList.Add(id);
}
else if (!isChecked && selectList.Contains(id))
{
selectList.RemoveAll(s => s == id);
}
ViewBag.selectList = selectList;
return Content("OK");
}
视图:
在my FirstController.cs中,查看包列表。选择列表=选择列表;正确创建,但如果我将这些字符串列表传递给SecondController.cs,而不是返回字符串列表,它会给出“System.Collections.Generic.List1[System.String]
知道我做错了什么吗
谢谢在您的视图中,隐藏了表单中如何调用SecondController的字符串列表
@using (Html.BeginForm("Second", "Second", new { returnUrl = ViewBag.returnUrl }))
{
if (ViewBag.StringList != null)
{
foreach (string item in ViewBag.StringList)
{
@Html.Hidden("StringList", item);
}
}
<input type="submit" class="nar-btn nar-form-size75" value="Submit List" />
}
然后在你的控制器里
[HttpPost]
public virtual ActionResult Second(string returnUrl, List<string> StringList)
{
// you should be now able to access to your list
return View();
}
AddSitesToUser中selectList的参数是字符串,这就是您得到的结果。我尝试传递ListselectList,但仍然存在相同的问题。您无法将集合分配给路由参数。您需要为集合中的每个项目创建输入
@using (Html.BeginForm("Second", "Second", new { returnUrl = ViewBag.returnUrl }))
{
if (ViewBag.StringList != null)
{
foreach (string item in ViewBag.StringList)
{
@Html.Hidden("StringList", item);
}
}
<input type="submit" class="nar-btn nar-form-size75" value="Submit List" />
}
[HttpPost]
public virtual ActionResult Second(string returnUrl, List<string> StringList)
{
// you should be now able to access to your list
return View();
}