我有另一个控制器的链接,我想传递一个字符串列表。
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;
对我做错了什么的想法?
由于
答案 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();
}