在Razor / MVC5(Asp.net)中显示db的图像

时间:2014-11-08 18:18:18

标签: c# asp.net asp.net-mvc razor controller

我是ASP.net的新手...我试图从MySql数据库中显示图像,但没有显示...... 在我的产品类中,我有一个图片列表:

public partial class product
{
    public product()
    {
        this.orderitems = new List<orderitem>();
        this.pictures = new List<picture>();
        this.productitemsuppliers = new List<productitemsupplier>();
        this.recommendations = new List<recommendation>();
        this.reviews = new List<review>();
        this.productitems = new List<productitem>();
    }

我在ProductController中使用了这个方法:

     static IDatabaseFactory dbFact = new DatabaseFactory();
        IUnitOfWork utOfW = new UnitOfWork(dbFact);

        public FileContentResult imageGenerate(int id)
        {
            byte[] image = utOfW.ProductRepository.GetById(id).pictures.ElementAt(0).picture1;
              // Another way to get the Byte Array from the Database...
            //  byte[] image = utOfW.PictureRepository.GetMany(p=>p.product.idProduct==id).ElementAt(0).picture1;
   if (image != null)  {
           return new FileContentResult(image, "image/jpg");
        }
             return null;
        }

并在我的视图中:

@foreach (var item in Model) {
....
  <td>
 <img id="image" src='@Url.Action("imageGenerate", "ProductController", new { id = item.idProduct})'/>
  </td>

}  

似乎还可以,但研究结果不是......

enter image description here

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

首先,检查您是否只使用简单的网络请求即可查看该文件,例如http://youraddress/Product/imageGenerate/5。如果你不能,那么生成图像就是一个问题。

如果您可以看到图像,那么您可能正在使用ProductController' in your view. You only need to specify name of the controller without extension Controller`。因此,您的图片代码应如下所示:

<img id="image" src='@Url.Action("imageGenerate", "Product", new { id = item.idProduct})'/>

答案 1 :(得分:0)

@dotnetom 首先感谢您的快速回答...... 我把电话改为:

<img id="image" src='@Url.Action("imageGenerate", "Product", new { id = item.idProduct})'/>

但现在我还有另一个问题:

enter image description here

但是我确信这个方法有效,我已经在ProductController的索引方法中对它进行了测试

 public ActionResult Index()
        {
            var products = db.products.Include(p => p.category).Include(p => p.promotion).Include(p => p.user);
            ViewBag.Count = utOfW.ProductRepository.GetById(1).pictures.Count(); // the result is 3 and it is true 

            return View(products.ToList());
        }