Lorsqu'une ligne du tableau HTML est cliquée, l'appel ajax est envoyé au contrôleur MVC3 qui renvoie un objet json avec un tableau d'octets de l'image, mais l'image vide être affiché dans la vue. Cela devrait fonctionner à partir d'IE 7 à 9Affichage de l'image renvoyée en tant que tableau d'octets du contrôleur MVC via l'appel Ajax
Le code du contrôleur est:
[HttpPost]
public ActionResult RenderImage(string code)
{
ImageVM viewmodel = GetImage(code)
return Json(viewmodel.Chart, "image/png");
}
Le code javascript pour soulever l'appel ajax et afficher l'image est
$(document).ready(function() {
$('#Table tr').click(function (event) {
var id= $(this).attr('id')
$.post("/Gateway/RenderImage", { "code": id },
function (data) {
alert(data);
$('#ChartDiv').html('<img height="200" width="250" src="data:image/png;base64,' + data + '" />');
});
});
});
I essayé de retourner tableau png byte en utilisant ce code de l'action RenderImage "return Json (System.IO.File.ReadAllBytes (errorFilePath))" et encore il n'est pas en mesure d'afficher l'image dans la vue – user1570697
@ user1570697 J'ai modifié la réponse et ajouté une petite modification à l'action pour le rendre le fil de l'image png e, je l'ai testé et son fonctionnement avec mon application. J'espère que cela t'aides. –
J'ai essayé le code du contrôleur avec un exemple d'image var filePath = "~/Images/Error.png"; var ImageBytes = Fichier System.IO.File.ReadAllBytes (Server.MapPath (filePath)); var base64data = Convert.ToBase64String (ImageBytes); return Json (base64data); l'image n'est toujours pas mise à jour, bien que les données arrivent à l'appel ajax, peut-être que cela ne fonctionne pas correctement $ ('# ChartDiv'). html (''); J'utilise IE 9 – user1570697