我是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>
}
似乎还可以,但研究结果不是......
感谢您的帮助
答案 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})'/>
但现在我还有另一个问题:
但是我确信这个方法有效,我已经在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());
}