2012-05-23 28 views
1

我需要在另一個ViewBag中使用ViewBag作爲列表,我不理解我該怎麼做。
這裏是我的代碼:如何在MVC3中使用ViewBag作爲列表

List<string> srclist = new List<string>(); 
      foreach(var item in candidateportfolio) 
      { 
       if(item.PortfolioID!=0 && item.ChandidateID!=0) 
       { 
        string filepath = Server.MapPath("~/ePortfolio/PortFolioContent/" + HobbyDetailID + "/Assignments/Exhb_" + item.PortfolioID + "_" + item.ChandidateID + ".jpg"); 
        if (System.IO.File.Exists(filepath)) 
        { 
         srclist.Add(filepath); 
        } 
       } 
      } 
      ViewBag.Thumbnail = srclist; 

candidateportfolio是類CandidatePortfolio的對象。

我在課堂上獲取數據,並檢查其是否領域不empty.Then我的文件路徑添加到列表中,並分配列表Viewbag

然後在視圖我用這樣的:

@foreach (var item in ViewBag.Thumbnail as List<string>) 
{ 
<img src="@item" title="Learner:@ViewBag.FirstName" width="150px" height="150px" border="5" style="align:right;margin:10px"/> 
} 

現在的問題是我也想獲取ViewBag.FirstName作爲list.and我不能在此運行另一個列表。請告訴我該怎麼做。

回答

5

如果你想同時包含FirstName和路徑,比方說,一個照片,你可以創建一個新的類的列表:

public class ThumbnailModel 
{ 
    public string FirstName { get; set; } 
    public string PhotoPath { get; set; } 
} 

現在你可以一個List<Thumbnail>添加到ViewBag

但我建議只是創建一個包含List<Thumbnail>屬性的相關模型的強類型視圖。

+0

+1的建議。 –

+0

@Eben Roux嘿thanx 4回答,我知道這會工作......但問題是filepath不是任何class.whilence的成員屬於一個class.hence暫時我希望擁有一種方式,我在哪裏我可以將這兩個添加到視圖包中,然後使用它。除了創建課程之外,沒有其他辦法嗎? – user1274646

+0

@ user1274646:如果文件和FirstName之間存在一對一的映射關係,那麼最簡單的方法是使用包含所有信息的ThumbnailModel類,然後再迭代一個集合。你可以使用兩個數組,然後在其中一個數組上使用正常的循環,然後通過索引訪問另一個數組,並且這比我想象的更加努力。 –

1

user1274646,

你最好的賭注在這裏是創建一個包含兩個等植物學縮略圖要素外加姓屬性的公共類。以下是這看起來可能:

public class CandidateItem{ 
    public string FirstName {get; set;} 
    public string Filepath {get; set;} 
} 

然後,在循環中,創建一個新的CandidateItem並將其添加到列表(即列表)。下面是修改後的代碼:

List<CandidateItem> srclist = new List<CandidateItem>(); 
foreach(var item in candidateportfolio) 
{ 
    if(item.PortfolioID!=0 && item.ChandidateID!=0) 
    { 
     CandidateItem candItem = new CandidateItem(); 
     candItem.Filepath = Server.MapPath("~/ePortfolio/PortFolioContent/" + HobbyDetailID + "/Assignments/Exhb_" + item.PortfolioID + "_" + item.ChandidateID + ".jpg"); 
     candItem.FirstName = item.FirstName; 
     if (System.IO.File.Exists(filepath)) 
     { 
      srclist.Add(candItem); 
     } 
    } 
} 
ViewBag.Thumbnail = srclist; 

然後用它在視圖:

@foreach (var item in ViewBag.Thumbnail as List<CandidateItem>) 
{ 
    <img src="@item.Filepath" title="Learner:@item.FirstName" width="150px" height="150px" border="5" style="align:right;margin:10px"/> 
} 
+0

嘿thanx 4這樣一個很好的答案,我知道這將工作......但問題是filepath不是任何class.whilence的成員屬於一個class.hence暫時我想擁有一種方式,我在哪裏可以將這兩個添加到視圖包中,然後使用它。除了創建課程之外,沒有其他辦法嗎? – user1274646