1

ViewBag を別の 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 のオブジェクトです。

クラスのデータをフェッチし、そのフィールドが空でないかどうかを確認します。次に、ファイルパスをリストに追加し、リストを 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 をリストとして取得したいことです。これで別のリストを実行することはできません。これを行う方法を教えてください。

4

2 に答える 2

5

両方を含むリストFirstNameと、たとえば写真へのパスが必要な場合は、新しいクラスを作成できます。

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

List<Thumbnail>これで、にを追加できますViewBag

ただし、プロパティを含む関連モデルを使用して、厳密に型指定されたビューを作成することをお勧めしList<Thumbnail>ます。

于 2012-05-23T13:47:06.813 に答える
1

ユーザー1274646、

ここで最善の策は、既存のサムネイル要素と追加の FirstName プロパティの両方を含むパブリック クラスを作成することです。これがどのように見えるかを次に示します。

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

次に、ループ内で新しい CandidateItem を作成し、それをリスト (つまり List) に追加します。修正されたコードは次のとおりです。

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"/> 
}
于 2012-05-23T13:47:16.663 に答える