在Razor中,我有一个循环,可以给我结果。在那个循环中,我有一个提供图像的Url.Action:
foreach (var i in Model.InventoryList)
{
<tr>
<td style="text-align: center;"><img alt="@i.ProductCode" src="@Url.Action("GetImageThumbnail", "ServiceRequest", new { ProductCode = i.ProductCode })" onclick="showGallery('@i.ProductCode');" /></td>
</tr>
}
所提供的图像取决于该特定行的图像是否存在。如果没有,则提供备用图像。
public ActionResult GetImageThumbnail(string productCode)
{
string filePath = "path_to_product.png";
Size size = new Size(80, 50);
if (!System.IO.File.Exists(filePath))
{
filePath = "No_image_available.png";
size = new Size(50, 50);
}
using (MemoryStream ms = new MemoryStream()){
Image image = Image.FromFile(filePath);
image = ImageHelpers.ResizeImage(image, size);
image.Save(ms, ImageHelpers.getImageFormat(filePath));
return File(ms.ToArray(), ImageHelpers.getContentType(filePath));
}
}
现在这很好,如果有一些结果,效果会相当快。如果有数千个结果,那么在服务所有这些图像实例时会有一些明显的减速。有更有效的方法吗?
我可能会在模型中提供较少的结果,但这不是我在这个特定问题中的目标。
答案 0 :(得分:2)
我会说一些选项 -