I’m having trouble with displaying image from db. I think that method for saving image is working, because I see in DB that varbinary fields have some value, and that image type is correct. Also the size of image. But when I want to display image for product i don’t get anything. Just blank space.. here is my code…
public byte[] GetImage(int productID)
{
Product product = products.GetByID(productID);
byte[] imageData = product.ImageData.ToArray();
return imageData;
}
That code is in my controller. Second is code from view :
<% if (product.ImageData != null) { %>
<img src='/product/getimage/<%= Html.Encode(product.ID) %>' alt=""/>
<% } %>
I tried some solutions found here on stack overflow, and everyone do it like this, but it’s working for them. I dont have any idea why images aren’t displayed. When i look at source code of page at debugging i have :
<img src='/product/getimage/18' alt=""/>
I’m using .net 4.0, MVC 2, VS 2010… Thanks in advance
My guess is that you have a routing issue. If the url
/product/getimage/18should work for your action you need to have a route that looks something like this:To confirm this you should use firebug and check the “net” tab (or set a breakpoint in your action and see if it gets hit when you load the page).
I would also recommend using the build in helpers to generate your urls (then this kind of problem will never happen). Instead of
src='/product/getimage/<%= Html.Encode(product.ID) %>'you can writesrc='<%=Url.Action("GetImage", "Product", new { productID = product.ID })%>'