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 id)
{
    IQueryable<byte[]> data = repository.GetImages(id);
    byte[] firstimage = data.First();

    return File(firstimage, "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 itemID)
{
    return from deliverable in entities.deliverables
           where deliverable.item_id.Equals(itemID)
           select deliverable.deliverable_image;
}

意見:

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

私のビューモデルには次のものがあります:

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

しかし、今では常にこのエラーが発生します:

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

誰かが私が間違っていることを知っていますか?

4

1 に答える 1

1

int64 のリストをビューに送信してrepository.GetIdsOfImages(1).ToList() おり、ビューには DeliverableViewModel が必要なため、モデルを作成し、リストをモデルに入れてビューに送信する必要があります。

アクションは次のようになります。

public ActionResult Index()
{
    var model = repository.GetIdsOfImages(1);
    DeliverableViewModel model = new DeliverableViewModel()
    model.DeliverablesIDsList = repository.GetIdsOfImages(1).ToList();
    return View(model); //send to the view a model type of DeliverableViewModel
}

ActionResult ShowImage を使用すると、アクションは id パラメータを期待し、DeliverableID を送信しているため、de var name を変更します

public ActionResult ShowImage(int DeliverableID)
{
    IQueryable<byte[]> data = repository.GetImages(DeliverableID);
    byte[] firstimage = data.First();

    return File(firstimage, "image/png");
}
于 2013-06-05T21:08:34.207 に答える