我想显示存储在我的数据库中的购物车项目的图像。跟随this SO post,我得到了90%的成绩。
我的观点有这样的图像:
<img alt="@item.Name" src="@Url.Action("Get_Cart_Item_Image", "Cart", new { sku_code = item.Summary })">
我的控制器有这样的方法:
public ActionResult Get_Cart_Item_Image(string sku_code)
{
using(var stream = new MemoryStream()) {
GetSKU(sku_code).Image.Save(stream, ImageFormat.Png);
return File(stream.ToArray(), "image/png");
}
}
这就是我想要的。它从数据库中获取正确的图像,并在我的视图中正确显示。
问题在于我注意到控制器方法是可浏览的,这样用户可能(可能偶然)转到URL Cart/Get_Cart_Item_Image?sku_code="SomethingValid"
并最终查看除了图像之外的页面。
根据我的阅读,将[ChildActionOnly]
添加到此控制器操作应该使其不可浏览,但这样做也会使图像不显示在视图中,而是显示丢失的图像图标。
所以我的问题是,我需要做些什么才能让我的视图在我的数据库中获取图像而不需要用户可以浏览控制器方法?这甚至可能吗?我正在做最好的练习吗?