2016-04-08 2 views
0

Это головной скребок. У меня есть код, который отлично работает в одном проекте. Я повторно использую его в другом, и он не работает. Не уверен, что я пропустил. Я пытаюсь вернуть изображение с моего контроллера MVC в элемент управления изображением. Метод:MVC FileContentResult для изображения возвращает двоичный код на экран

public ActionResult ScannedImage(ImageSideIndicator side) 
    { 
     try 
     { 
      ScannedItemViewModel model = (ScannedItemViewModel)Session["selectedItem"]; 

      String imagePath = side.ImageSide == 1 ? model.Item.FrontImagePath : model.Item.RearImagePath; 
      byte[] image = CA.ImageStreamer.Image.FromFile(imagePath, System.Drawing.Imaging.ImageFormat.Jpeg); 
      if (image == null) 
      { 
       return File(ImageNotFound(), "image/png"); 
      } 
      else if (image.Length == 0) 
      { 
       return File(ImageNotFound(), "image/png"); 
      } 

      model = null; 
      return File(image, "image/jpeg"); 
     } 
     catch (Exception ex) 
     {     
      return File(ImageNotFound(), "image/png"); 
     } 
    } 

И управление изображения:

img id="imgCheckImage" class="imageBorder" style="max-height:100%;max-width:100%" alt="Check Image" src="Scan/[email protected]&[email protected]" 

Когда изображение возвращается управления изображением записывает двоичный файл вместо изображения. Как я сказал, это прекрасно работает в другом проекте. Я что-то забыл?

ответ

0

Оказывается, я пропустил промежуточный шаг запроса частичного представления, содержащего мой контроль изображения, и прямо запрашивал двоичный файл изображения, и это именно то, что я получил. Так что я изменил:

$.ajax({ 
     url: '@Url.Action("ScannedImage", "Scan")', 
     type: 'POST', 
     dataType: 'html', 
     cache: false, 
     data: { ImageSide: currentSide }, 
     success: function (data, status, xhr) { 
      if (SessionTimedOut(data)) { 
       RedirectToLogin(); 
       return; 
      } 
      $('#divPanZoomImage').html(data); 
     }, 
     error: function (xhr, status, error) { 
      alert(error); 
     } 
    }); 

To:

$.ajax({ 
     url: '@Url.Action("ShowScannedImage", "Scan")', 
     type: 'POST', 
     dataType: 'html', 
     cache: false, 
     data: { ImageSide: currentSide }, 
     success: function (data, status, xhr) { 
      if (SessionTimedOut(data)) { 
       RedirectToLogin(); 
       return; 
      } 
      $('#divPanZoomImage').html(data); 
     }, 
     error: function (xhr, status, error) { 
      alert(error); 
     } 
    }); 

Где ShowScannedImage вернулся PartialViewResult, содержащего элемент управления изображением, который затем запрашивает двоичный.