2012-05-23 6 views
1

ViewBag를 다른 ViewBag의 목록으로 사용해야하며 어떻게해야하는지 이해하지 못합니다.ViewBag를 MVC3의 목록으로 사용하는 방법

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로 가져오고 싶습니다.이 목록에서 다른 목록을 실행할 수 없습니다. 어떻게해야하는지 알려주세요.

답변

5

당신은 모두 FirstName 및 경로, 말, 사진은 새로운 클래스를 만들 수 있습니다에 포함되어있는리스트하려면 다음

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

는 이제 ViewBagList<Thumbnail>를 추가 할 수 있습니다.

그러나 나는 단지 List<Thumbnail> 속성을 포함하는 관련 모델을 사용하여 강력한 형식의 뷰를 만드는 것이 좋습니다.

+0

1 :

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; 

다음과 같이보기에 그것을 사용할 수 있습니다. –

+0

@Eben Roux 안녕하세요 고맙습니다 4 답변 및이 작동합니다 알아요 ...하지만 문제는 filepath 어떤 class.whilece의 구성원이 아닌 시간에 대한 class.hence에 속하는 방법 내가 어디로 가고 싶어 이 두 가지를 뷰백에 추가 한 다음 사용할 수 있습니다. 수업을 만드는 것 외에 다른 방법은 없습니까? – user1274646

+0

@ user1274646 : 파일과 FirstName 사이에 일대일 매핑이있는 경우 모든 정보가 포함 된 ThumbnailModel 클래스와 반복 할 컬렉션을 갖는 것이 가장 쉽습니다. 두 배열을 가지고 배열 중 하나에서 일반 for 루프를 사용하고 인덱스를 사용하여 다른 배열에 액세스 할 수는 있지만 생각보다 가치있는 것입니다. –

1

user1274646, 여기

당신의 최선의 방법은 소재 기존 썸네일 요소를 더한 추가 FIRSTNAME 속성을 모두 포함하는 공용 클래스를 만드는 것입니다. 다음은이 보일 수 있습니다 방법은 다음과 같습니다

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

다음 루프에서, 새로운 CandidateItem을 만들고 목록 (즉, 목록)에 추가합니다. 다음은 수정 된 코드는 : 귀하의 제안에 대한

@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

안녕하세요 고맙습니다 4 좋은 답변과 나는 이것이 작동합니다 ...하지만 문제는 filepath 어떤 class.whilece의 구성원이 아닌 시간에 대한 class.hence에 속하는 내가 hav 방법을 원한다. 이 두 가지를 뷰백에 추가 한 다음 사용할 수 있습니다. 수업을 만드는 것 외에 다른 방법은 없습니까? – user1274646

관련 문제