【问题标题】:Error loading images from database从数据库加载图像时出错
【发布时间】:2013-06-05 21:01:23
【问题描述】:

我有一个关于在索引视图中显示从 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 })" />
}

在我的 Viewmodel 中,我有:

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

但现在我总是收到这个错误:

传入字典的模型项的类型为“System.Collections.Generic.List`1[System.Int64]”,但此字典需要“GDMfrontEnd.Models.DeliverableViewModel”类型的模型项。

有人知道我做错了吗?

【问题讨论】:

    标签: asp.net asp.net-mvc view controller models


    【解决方案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");
    }
    

    【讨论】:

    • 谢谢!问题现在出现在我的 showImage 操作中:/ 他没有显示图像 :( 你可能知道问题是什么吗?看起来他没有参与操作...
    猜你喜欢
    • 2021-06-22
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多