0

mysql データベースからロードされた画像をビューに表示することについて質問があります。

私のデータベーステーブル「deliverables」には、「item_id」、「deliverable_image」、および「afstudeerrichting_id」があります。「item_id」と「afstudeerrichting_id」は、他のテーブルからの FK です。

afstudeerrichting_id = ..のときに画像を表示したい

コントローラ:

public ActionResult Index()
{
    var model = repository.GetIdsOfImages(1);
    return View(model.ToList());
}
public ActionResult ShowImage(int afstudeerrichtingid)
{
    IQueryable<byte[]> data = repository.GetImages(afstudeerrichtingid);
    var thedata = data.First();
    return File(thedata, "image/png");
}

リポジトリ(画像を取得する場所):

public IQueryable<long> GetIdsOfImages(int afstudeerrichtingid)
{
    return from deliverable in entities.deliverables
    where deliverable.afstudeerichting_id.Equals(afstudeerrichtingid)
    select deliverable.item_id;
}
public IQueryable<byte[]> GetImages(int afstudeerrichtingid)
{
    return from deliverable in entities.deliverables
    where deliverable.afstudeerichting_id.Equals(afstudeerrichtingid)
    select deliverable.deliverable_image;
}

意見:

@foreach(var imgID in Model.DeliverablesIDsList)
{
    <img src="@Url.Action("ShowImage", "Deliverable", new { DeliverableID = imgID })" />
}

私のViewmodelで:

public List<long> DeliverablesIDsList { get; set; }
public int DeliverableID { get; set; }

今、私はエラーが発生します:

ディクショナリに渡されたモデル アイテムのタイプは 'System.Collections.Generic.List`1[System.Int64]' ですが、このディクショナリにはタイプ 'GDMfrontEnd.Models.DeliverableViewModel' のモデル アイテムが必要です。

ViewModel で何を変更すればよいですか? または、私は何を間違っていますか?

4

1 に答える 1

1

あなたはそれを行うことができます:
1)画像のIDのリストをビューに渡し、このようにリストを構築します

@foreach(var imgId in model.ImgIdsList)
{
<img src="@Url.Action("ShowImage", "Deliverable", new { imageId = imgId })" />
}

2)このビューを開くコントローラーで、単にImgIdsListを構築します(おそらく、intのリストを返すGetIdsOfImagesWithAfstudeerichtingid(int afstudeerrichtingid)が必要です)
3)ShowImageメソッドを使用する必要があります-afstudeerrichtingidを渡すのではなく、画像の一意のIDを渡します; もちろん、このメソッドでは GetImageById(int id) のようにメソッドを作成する必要があります。

于 2013-06-05T19:27:39.537 に答える