Как я могу сделать изображение в asp.net mvc? - PullRequest
4 голосов
/ 22 августа 2010

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

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

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

Это предоставленный мною метод действия, который простопринимает идентификатор категории./ image / show / 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);
    }

Примечание. Изображение является байтом []

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

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

Ответы [ 4 ]

10 голосов
/ 22 августа 2010

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

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);
}

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

<img src="<%: Url.Action("Show","Image",new { id = Model.Category.CategoryID  }) %>" />
1 голос
/ 22 августа 2010

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

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 голосов
/ 22 августа 2010

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

0 голосов
/ 22 августа 2010

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

<%= Url.Action( "Show", "Image", new { id = product.Category.CategoryID } ) %> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...