Как вернуть несколько изображений с помощью байтового массива?

Hello someone helped me to return several images, works perfect to bring the first since i’M using 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");
}

Здесь Бритва:

@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>
}

3 ответа

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

  2. То, что я бы сделал, это иметь уникальный идентификатор для каждого 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что и .

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