Хранение списка в скрытом поле приводит к странным результатам - PullRequest
3 голосов
/ 04 марта 2011
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 вашей модели. Foo содержит одну строку, которая гласит:

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

Я так растерялся ...

1 Ответ

5 голосов
/ 04 марта 2011

Это результат, если вы запускаете ToString() в своей коллекции, как это делает HiddenFor.Вам нужно сделать что-то особенное, чтобы сделать список в виде строки.

Вот быстрый и грязный оператор Linq, который преобразует его в разделенный запятыми список:

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