我目前正在試圖查看存儲在數據庫中爲BLOB的圖像,要做到這一點,我創建的類型FileContentResult它看起來像這樣的控制器操作:ASP.NET MVC 4 FileContentResult運行兩次
public FileContentResult ImageFile(string imageId)
{
var client = new WcfTestClient();
DataTable table = client.GetImageData(imageId);
var image = ConvertToBytes(table);
byte[] bytes;
bytes = image[0].Values.ElementAt(0);
return File(bytes, @"image/png");
}
它從數據庫中獲取正確的圖像數據,並且ConvertToBytes()也能正常工作,但由於某種原因,將圖像返回到視圖後,它會跳回頂部並再次運行。
我使用Ajax調用從我的瀏覽這樣的方法:
$.ajax({
url: "/Home/ImageFile",
type: "GET",
data: { "imageId": imageId },
success: function (data) {
var image = document.createElement('img');
image.src = "/Home/ImageFile?id=" + imageId;
image.width = 100;
image.height = 100;
div.appendChild(image);
}
});
有誰知道什麼可能導致我的問題?
更新
好了,現在後被告知,這是阿賈克斯的是把事情搞糟我試圖參數發送到我的控制器操作是這樣的:
var images = JSON.parse(window.localStorage.getItem("JsonImages"));
var div = document.getElementById('imgOutput');
for (var i = 0; i < images.length; i++) {
var imageId = images[i].pi_Id;
var imgId = JSON.parse('{"imageId":' + imageId + '}');
var img = document.createElement('img');
img.src = "/Home/ImageFile?id=" + imgId;
img.width = 100;
img.height = 100;
div.appendChild(img);
}
其中,可悲的是,不太好。那麼,有沒有辦法將參數發送到ImageFile()而不使其運行兩次?我在這裏錯過了什麼?
更新2
最後我得到它的工作!這是它現在的樣子:
var images = JSON.parse(window.localStorage.getItem("JsonImages"));
var div = document.getElementById('imgOutput');
var createImage = function (src) {
var img = document.createElement('img');
img.src = src;
img.height = 100;
img.width = 100;
return img;
}
for (var i = 0; i < images.length; i++) {
var imageId = images[i].pi_Id;
var imageSrc = "/Home/ImageFile?imageId=" + imageId;
div.appendChild(createImage(imageSrc));
}
我只需要將源的參數從id更改爲imageId(duh)。謝謝你的幫助!
什麼觸發ajax調用? – 2013-05-03 07:06:19