在ViewBag中传递的List <string>获取“System.Collections.Generic.List`1 [System.String]”</string>

时间:2014-10-02 19:26:43

标签: asp.net-mvc-4

我有另一个控制器的链接,我想传递一个字符串列表。

FirstController.cs

我有表中的记录列表,每行都有复选框,通过选中复选框选择字符串值列表。

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");
}

我使用&#39; ViewBag&#39;

传递给SecondController.cs的字符串值列表
public ActionResult AddSitesToUser(string returnUrl,string selectList, int userId = 0)
{
    ViewBag.selectList = selectList;
}

查看:

(Html.BeginForm("AddSitesToUser", "User", new { returnUrl = ViewBag.returnUrl,selectList=((List<string>)ViewBag.selectList )})

在我的FirstController.cs中,ViewBag.selectList = selectList列表;正确创建,但如果我将这些字符串列表传递给SecondController.cs而不是返回字符串列表,它会给我&#39;&#34; System.Collections.Generic.List1 [System.String]&#34;

对我做错了什么的想法?

由于

1 个答案:

答案 0 :(得分:0)

在您的视图中

隐藏表单内部的字符串列表,如何调用第二个控制器

   @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();
    }