2014-05-22 43 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"];