jQuery FancyBox com Ajax
Eu já visitei muitos sites e páginas no Stackoverflow, mas nenhum deles resolveu meu problema ainda. Simplesmente, eu tenho umhyperlink
e quero recuperar uma imagem do banco de dados viaAjax
ligar e depois exibi-lo noFancyBox
Aparecer. Eu também tentei muitas combinações diferentes deJavascript
eController
métodos de ação, mas não foram gerenciados, portanto, exiba o arquivo baixado corretamente. Você poderia dar uma olhada no meu código e dar um exemplo de trabalho contendo todos os métodos necessários emView
e emController
? Por outro lado, seria melhor abrir uma caixa de diálogo para os outros tipos de arquivo (por exemplo, excel, pdf) ao abrirFancyBox
para arquivos de imagem.
Visão:
<a onclick="downloadFile(@Model.ID);">@Model.FileName</a>
function downloadFile(id) {
$.ajax({
url: "/Issue/RenderImage?ID=" + id,
async: true,
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (response) {
$('#fancybox-inner').html('<img height="200" width="250" src="data:image/png;base64,' + response + '" />');
}
});
}
Controlador: Não há nenhum problema com relação ao método no Controlador e ele retorna a imagem corretamente.
[HttpPost]
public virtual JsonResult RenderImage(int id)
{
string str = System.Convert.ToBase64String(repository.FileAttachments.FirstOrDefault(p => p.ID == id).FileData, 0, repository.FileAttachments.FirstOrDefault(p => p.ID == id).FileData.Length);
return Json(new { Image = str, JsonRequestBehavior.AllowGet });
}