2010-08-22 4 views
4

У меня есть образец, который я строю, это использование базы данных Northwind. У меня есть представление, в котором я показываю все продукты для категории specificc и использую ul для создания элементов с изображением и именем и ценой продукта.Как сделать изображение в asp.net mvc?

Я использовал здесь код http://blogs.msdn.com/b/miah/archive/2008/11/13/extending-mvc-returning-an-image-from-a-controller-action.aspx.

И пришли к выводу, что если я щелкнул правой кнопкой мыши изображение на своей странице, я получу следующее за URL-адресом изображения.

Это метод действия, который я предоставил, который просто принимает идентификатор категории. /изображение/показать способ/1

Мои действия в моем ImageController выглядит следующим образом:

// 
    // GET: /Image/Show 
    public ActionResult Show(int id) 
    { 
     var category = northwind.AllCategories().Single(c => c.CategoryID == id); 
     byte[] imageByte = category.Picture; 
     string contentType = "image/jpeg"; 

     return this.Image(imageByte, contentType); 
    } 

Примечание: Изображение байт []

Затем я называю это, на мой взгляд, как это. (продукт является моделью для моего зрения)

Но я все еще не могу получить изображение для отображения.

+0

Правильно ли отображается изображение, когда вы переходите к URL-адресу действия (/ image/show/1)? Если это так, есть ошибка в том, как вы вставляете изображение в свой HTML. В противном случае проверьте данные, возвращаемые вашим методом, используя Fiddler2 или аналогичные. – LorenzCK

ответ

10

Изменить действие

public FileContentResult Show(int id) 
{ 
    var category = northwind.AllCategories().Single(c => c.CategoryID == id); 
    byte[] imageByte = category.Picture; 
    string contentType = "image/jpeg"; 

    return File(imageByte, contentType); 
} 

и отправить экземпляр продукта для просмотра и попробовать это в виду

<img src="<%: Url.Action("Show","Image",new { id = Model.Category.CategoryID }) %>" /> 
+0

Вы поняли. Спасибо за помощь, просто понял, что у вас есть именно то, что мне нужно. –

+0

Flippin 'awesome! –

0

Я не уверен, что проблема у вас есть, но я всегда капитализировать действия и контроллера названия:

<%= Url.Action("Show", "Image", new { id = product.Category.CategoryID }) %> 
+0

Я также обновил мой, спасибо. –

1

Попробуйте использовать этот метод вместо:

public FileContentResult Show(int id) 
{ 
    var category = northwind.AllCategories().Single(c => c.CategoryID == id); 
    byte[] imageByte = category.Picture; 
    string contentType = "image/jpeg"; 
    return File(imageByte, contentType); 
} 

Это должно если вы не используете это расширение. Если это работает, ошибка возникает в расширении, если это не работает, ошибка находится где-то в другом месте - возможно, в маршрутизации. Также проверьте ответ Густава!

+0

Я изменил метод, но изображение пока не отображается. Код для изображения должен быть/Image/Show? CategoryID = 1 , и мой маршрут на страницу есть/Продукты/Обзор/Напитки, например –

+0

Оказывается, мне пришлось использовать анонимный тип

0

Оказывается, я должен был использовать тип anoynomus 'так, что маршрут/Image/Показать/1 вместо/Image/Show? CategoryID = 1. Это и, конечно же, необходимо было обновить изображения в Northwind от bitmap до Jpeg.

Смежные вопросы