我有多个方法可以返回一个简单的类型(string,..)&amp;返回集合Collection<Tuple<Model_name, string>>
我最初尝试使用简单的Collection<string>
,但是当我使用Tempdata将集合传递给视图时,它无效。
示例:
控制器:
public ActionResult Index()
{
Collection<string> test_Q_Q = new Collection<string>();
test_Q_Q.add("abcd");
test_Q_Q.add("adbc");
Tempdata["test"] = test_Q_Q;
return view();
}
查看:
<!--Bla Bla here-->
@foreach (var lst in Tempdata["test"]) //error here
{
<li> </li>
}
答案 0 :(得分:0)
尝试关闭foreach
循环测试。
<!--Bla Bla here-->
@foreach (var lst in Tempdata["test"] ) // Close
{
<li> ???? </li>
}
答案 1 :(得分:0)
真正的问题是TempData是一个愚蠢的字典,并且不知道存在于其数据中的IEnumerable。如果你真的想坚持这种方法,只需将TempData转换为适当的类型,如下所示:
@foreach (var lst in (Collection<string>) TempData["test"])
{
<li> @lst </li>
}
话虽如此,我认为你不应该使用TempData。我建议使用一个强类型的Model对象,它被传递到视图中,在控制器中就像这样:
var model = new MyCustomType();
model.ListOfStrings = new Collection<string>();
model.ListOfStrings.Add("foo");
model.ListOfStrings.Add("blah"); // You get the idea
return View(model);
然后,在您的视图中,在顶部声明类似的类型:
@model MyCustomType
并按照以下方式解决:
@foreach (var item in Model.ListOfStrings)
{
<li> @item </li>
}
至少,我希望您使用ViewBag而不是TempData。正如一些评论所提到的,TempData具有特殊用途,与HTTP请求的生命周期有关,并不意味着以您使用它的方式使用。祝你好运!