3

在我的控制器中,我检索产品列表以及图像名称,然后将图像缩小到视图所需的大小。图像现在在内存中,可以写入响应流。我知道客户端会为每个图像发送响应,但我不知道如何连接到它以提供图像。

查看代码:

    @foreach (var product in Model.Products)
    {
       @product.Name
       <img src="@product.Thumbnail"/>
       Priced From $@product.LowestPrice
    }

控制器:

    model.Products =
       DataContext.Products.Where(p => p.Category.Name
            .Equals(id)).Select(m => new ProductListItem
                {
                   Name = m.Name,
                   Thumbnail = ImageResizer.Resize(m.Image, 75, 100, <normally I put the output stream here>),
                   LowestPrice = SqlFunctions.StringConvert( m.PriceSet.Prices.Min(p =>p.Price1))
                }
    );

ImageResizer.Resize() 签名在哪里

Resize(string imageName, int width, int height, Stream outputStream)

所以我认为我的问题应该是——我应该为图像名称输入什么以及如何监听可以写入流的每个图像的请求?

4

1 回答 1

5

获取新操作的路由/操作链接,该操作下载图像以设置为图像 url,

<img src='@Url.RouteUrl("Full", new { action = "Image", controller = "Media", number = product.id })' />

或者

<img src='@Url.Action("Image", new { number = 3 })' />

添加具有类似内容的新操作

public ActionResult Image(int? number)
{
    var media = mr.GetMedia(number);

    return base.File(media.Content, media.ContentType ?? "image/jpeg");
}

其中 media.Content 是二进制内容或流引用

于 2011-06-25T06:29:10.893 回答