我已经在几个论坛上使用了我在一个视图上显示byte []的示例。我遇到的问题是有时照片会在视图上重复出现。例如,我想显示photo1和photo2。当页面加载时,我看到photo1和photo2。我刷新页面,我可能会看到photo1两次或photo2两次。
更新
我发现了我的问题。我发现在我们的后端代码中没有编写为线程安全的类。它持有关于所要求的照片的状态。因此,根据照片请求的时间,两个请求可能会返回相同的照片。
这是我的控制器代码。
public virtual ActionResult GetImage(int id) {
ClientDataPortal portal = new ClientDataPortal();
GetPhotosCommand command = new GetPhotosCommand();
command.GetPhotosActionEnum = GetPhotosActionEnum.GETDISTRIBUTORPHOTO;
command.PhotoSearchCriteria = new PhotoSearchCriteria();
command.PhotoSearchCriteria.DistributorPhotoId = id;
DistributorPhotoData item = portal.Fetch<DistributorPhotoData>(command);
//return new FileStreamResult(new System.IO.MemoryStream(item.Thumbnail), "image/jpeg");
return File(item.Thumbnail, "image/jpeg");
}
以下是视图中的代码
<table>
@foreach (var item in Model.DistributorPhotos) {
<tr>
<td id="item.DistributorPhotoId.ToString()" >
<img id="item.DistributorPhotoId.ToString()" src="@Url.Action("GetImage", "Photo", new { id = item.DistributorPhotoId })" alt="Image" />
</td>
<td>@item.DistributorPhotoId.ToString()</td>
</tr>
}
</table>