我正在通过我的行动结果将一个元组传递给我。我不需要创建一个类,因为它将容纳不到六个项目,并且只能在应用程序中使用一次。我之前从未听说过Tuple,这似乎是最好的方式。问题是当我不知道元组有多大时,我如何检索我的结果?
我的代码返回错误:“ foreach语句无法对'object'类型的变量进行操作,因为'object'不包含'GetEnumerator'的公共定义”
许多网站都解释了这个错误“如果你想在Tuple上使用foreach,那么你可以继承Tuple类并使用IEnumerable接口实现子类,并为GetEnumerator方法提供定义。”我坐在那里在这里划伤我的脑袋,好像我在读乌尔都语。
重构这个以传递列表列表的最佳方法是什么? Thanx提前为您的建议。
我的行动结果:
List<Tuple<string, string>> mylist = new List<Tuple<string, string>>();
string[] bits = stringvar.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string bit in bits)
{
... //some string manipulation here
mylist.Add(new Tuple<string, string>(string1, string2 ));
}
ViewData["FolderPath"] = mylist;
return PartialView("MyPartialView");
和我的偏见:
<% if (ViewData["FolderPath"] != null) {
var mystuff = ViewData["FolderPath"];
foreach (Tuple<string, string> item in mystuff)
{
string one = item.Item1;
string two = item.Item2;
... // do something with my strings
}
}
%>
答案 0 :(得分:1)
你写的地方:
var mystuff = ViewData["FolderPath"];
你应该尝试:
var mystuff = (List<Tuple<string, string>>)ViewData["FolderPath"];