2014-05-22 39 views
1

我传递一个元组到我的部分观点从我的ActionResult查看,循环。我不需要创建一个类,因为它将保存少于六个项目,并且只会在应用程序中使用一次。我以前从来没有听说过Tuple,它似乎喜欢最好的方式。问题是,我不知道Tuple有多大会如何检索我的结果?传递元组通过结果

我的代码返回错误:“foreach语句无法在类型‘对象’的变量操作,因为‘对象’不包含‘的GetEnumerator’一个公共定义”

许多网站解释这个错误“如果你想使用的元组的foreach,那么你可以继承元组类,并实现与IEnumerable接口的子类和GetEnumerator方法提供定义。“而我坐在这里抓我的头,好像我在读乌尔都语。

什么是重构这个传递的目录列表的最佳方式?提前感谢您的建议。

我的ActionResult:

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"); 

和我Partialview:

<% 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  

    } 
}    

    %> 
+3

I D如果仅使用一次,就不会看到任何问题来创建类。类将使您的代码更具可读性并易于支持。也许这就是我个人的元组的厌恶与他们的项目1,项目2,itemN –

+1

@SergeyBerezovskiy你并不孤单,我和你在一起.. –

+0

但在MVC不应该我创建了一个模型来代替?如果是这样,为什么要为这个愚蠢的代码创建一个完整的模型,如果不是的话,我应该把类放在哪里?我可以很容易地将字符串传递给视图,并通过它分割/循环,但不知何故,这似乎并不正确。 – Darkloki

回答

1

你写:

var mystuff = ViewData["FolderPath"]; 

你应该尝试:

var mystuff = (List<Tuple<string, string>>)ViewData["FolderPath"];