在隐藏字段中存储列表会导致奇怪的结果

时间:2011-03-03 22:19:39

标签: asp.net-mvc-3 razor hidden-field

public ActionResult DoSomething()
{
return View("Index", new IndexModel { Foo = new List<string>() { "*" });
}

其中Index.cshtml的表单包含@Html.HiddenFor(m => m.Foo)

public ActionResult ProcessForm(IndexModel model)
{
}

在ProcessForm中,你的model.Foo包含一个字符串,其中包含:

System.Collections.Generic.List`1[System.String]

我很困惑......

1 个答案:

答案 0 :(得分:5)

如果您在集合上运行ToString(),那就是结果,就像HiddenFor正在做的那样。你需要做一些特殊的事情才能将列表变成一个字符串。

这是一个快速而又脏的Linq语句,它将其转换为以逗号分隔的列表:

list.Aggregate("", (s,x) => string.IsNullOrEmpty(s) ? x : s + ", " + x);