我有一个问题想发表一些意见。我完全明白我不能直接从我的视图模型渲染图像(字节 [])。我知道我需要一个 id 来代表我的视图模型中的图像。
一旦我将我的视图模型绑定到我的视图,我就可以执行以下操作:
<img src="@Url.Action("GetPhoto", new { photoId = Model.PhotoId })" />
然后这个:
public ActionResult GetPhoto(int photoId)
{
byte[] photo = GetPhotoFromDb(photoId);
return File(photo, "image/jpeg");
}
但是,我调用了第 3 方 Web 服务(我不控制它),我调用它来获取填充我的视图模型的聚合。像这样的一些事情:
-Vehicle
-VehicleId
-VehicleName
-VehicleImage byte[] <=======
-VehicleServiceHistory
-ServiceHistoryId
-SericeType
-ServiceTitle
所以理论上我可以打电话给第 3 方网络服务人员说,我知道你已经给了我的 VehicleImage 汇总(上图),但我可以单独调用一个名为 GetImageById(int imageId) 的新服务方法吗.
所以让我们假设他们说不。所以我所拥有的只是已经拥有我的图像的数据聚合,但我知道我必须像上面所说的那样将图像单独加载到视图中:
<img src="@Url.Action("GetPhoto", new { photoId = Model.PhotoId })" />
我可以做一些讨厌的事情,比如当聚合从 Web 服务下来时将图像添加到会话中并询问会话以使用 photoId 获取图像, 但我没有办法这样做。
任何人都可以给我任何想法,让我了解如何使用已经可用的图像,而无需再打另一个电话。
注意:我完全可以调用单独的操作:
public ActionResult GetPhoto(int photoId)
{
byte[] photo = GetPhotoFromDb(photoId);
return File(photo, "image/jpeg");
}
但我想在此操作中使用已在聚合中提供的图像,而不必再次调用该服务。
期待听到您的建议。
谢谢RuSs
注意:这篇文章已经在这里发布了几个星期,肯定有人有意见!!:(