在View中显示IQueryable的图像

时间:2013-06-05 19:19:25

标签: asp.net asp.net-mvc image view iqueryable

我有一个关于在视图中显示从mysql数据库加载的图像的问题。

在我的数据库表“可交付成果”中,我有“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中更改哪些内容?或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

你可以这样做:
1)传递给视图一个图像列表&#39; ids,并建立这样的列表

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

2)在打开此视图的控制器中,只需构建一个ImgIdsList(可能需要一个GetIdsOfImagesWithAfstudeerichtingid(int afstudeerrichtingid),这将返回一个int列表) 3)你应该使用你的ShowImage方法 - 不要通过afstudeerrichtingid,而是使用独特的图像id;当然在这个方法中你应该像GetImageById(int id)。

这样的方法