2016-09-28 1 views
0

Привет, кто-то помог мне вернуть несколько изображений, отлично работает, чтобы перенести первый, так как я использую FirstOrDefault.Как вернуть несколько изображений с помощью массива байтов?

Эта функция от контроллера и часть бритвы

public async Task<ActionResult> Detalle(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

    Item item = await db.Items.Include(i => i.Imagenes).Where(p => p.ProductoID == id).FirstOrDefaultAsync(); 

    if (item == null) 
    { 
     return HttpNotFound(); 
    } 

    return View(item); 
} 

public ActionResult RenderImage2(int id) 
{ 
    Imagen imagen = db.Imagenes.Where(i => i.ProductoID == id).FirstOrDefault(); 
    byte[] photoBack = imagen.InternalImage; 
    return File(photoBack, "image/png"); 
} 

Здесь Razor:

@foreach (var item in Model.Imagenes) 
{ 
    <li> 
     <a class="thumb-item-link" data-slide-index="0" href=""> 
      <img src="@Url.Action("RenderImage2", new { id = Model.ProductoID})" alt="img" /> 
     </a> 
    </li> 
} 
+0

Итак, каков ваш вопрос? –

+0

проблема в том, что всегда показывает мне первую картинку, если у меня есть три фотографии, показывающие мне первые три раза. – Max

+0

Затем вам нужно сообщить свой «RenderImage2», какой из изображений для рендеринга, возможно, с другим параметром ... –

ответ

0

Вы не можете вернуть более одного изображения в том же действии, как он возвращает только один файл, но вы можете создать спрайт изображения, содержащий все изображения, и вернуть его как один файл, но в этом случае ваш клиент должен понять, что ожидает, что изображение спрайта не будет отображаться.

+0

Я понимаю, и как я это делаю? пример? Спасибо. – Max

+0

проверить это, у вас есть ответ http://stackoverflow.com/questions/10451823/how-to-create-a-sprite-image –

0

Что я хотел бы сделать, это иметь уникальный идентификатор для каждого Imagen (с именем ImagenID ради этого примера).

Таким образом, ваш метод будет выглядеть следующим образом:

public ActionResult RenderImage2(int id) 
{ 
    Imagen imagen = db.Imagenes.Where(i => i.ImagenID == id).FirstOrDefault(); 
    byte[] photoBack = imagen.InternalImage; 
    return File(photoBack, "image/png"); 
} 

Поскольку каждый Imagen имеет уникальный идентификатор, который должен возвращать только изображение, которое вы хотите.

В бритве, вы бы просто использовать item вы уже отслеживание:

@foreach (var item in Model.Imagenes) 
{ 
    <li> 
     <a class="thumb-item-link" data-slide-index="0" href=""> 
      <img src="@Url.Action("RenderImage2", new { id = item.ImagenID })" alt="img" /> 
     </a> 
    </li> 
} 

Это предполагает, что Model.Imagenes содержит Imagen объектов, которые приходят из того же места, как db.Imagenes.

+0

Я дурак! Хаха должен был это изменить. Я работал над этим. Привет из Аргентины :) – Max

+0

Нет проблемa. Просмотрите http://stackoverflow.com/help/someone-answers, как работает Stack Overflow с ответами. –

+0

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

0

решена !!! Мне просто пришлось изменить идентификатор продукта по идентификатору изображения как в контроллере, так и в представлении.

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