2013-04-03 77 views
2

參照此link,我使用MessagingToolkit.QRCode.dll創建了QR碼圖像。 如何使用myLayout在同一視圖中顯示已保存的圖像。
控制器代碼MVC4中的顯示圖像查看

[HttpPost] 
    public ActionResult GenerateExcelQR(string Command, FormCollection collection) 
    { 
    if (Command == "Excel") 
    { 
    // logic to generate Excel 
    } 
    else if(Command =="QRCode") 
    // qr code logic // 
     QRCodeEncoder encoder = new QRCodeEncoder(); 
     Bitmap img = encoder.Encode(qrcode); 
     string path = Server.MapPath("/Images/QRCode.jpg"); 
     img.Save(path, ImageFormat.Jpeg); 
     return base.File(path,"image/jpeg"); // Displays the QR image without my layout. 
    // return View(path,"image/jpeg");  // Returns an error specifying "Images\QRCode.jpg' or its master was not found or no view engine supports the searched locations." 
    } 

如何在同一視圖的佈局顯示QR碼的圖像。
有什麼建議。
編輯 ImageModel.cs

public static class ImageModel 
    { 
     public static string Image(this HtmlHelper htmlHelper, string path, string alt) 
     { 
      var img = new TagBuilder("img"); 
      img.MergeAttribute("src", path); 
      img.MergeAttribute("alt", alt); 
      return img.ToString(TagRenderMode.SelfClosing); 
     } 
    } 

鑑於

@model IEnumerable<SampleECommerce.Models.CheckoutModel> // reference to 1st model to return values 
@using SampleECommerce.Models; // for Imagemodel 

回答

1

您應該返回不是一個文件,而是一個觀點,鑑於渲染圖片。下面的圖像 - 是一個HTML幫助:

public static HtmlString Image(this HtmlHelper helper, string path, string alt) 
{ 
    var img = new TagBuilder("img"); 
    img.MergeAttribute("src", path); 
    img.MergeAttribute("alt", alt); 
    return new HtmlString(img.ToString(TagRenderMode.SelfClosing)); 
} 

,然後只用它在一個視圖:

@Html.Image(path_to_your_image, "Description") 

而在你的控制器使用只是return View();

要使用這個幫手,你應該創建您項目中的文件夾,例如'助手'。然後,在該文件夾中創建文件,例如'HtmlImageHelper.cs',然後將助手的內容放入此文件中。在此之後,在您的頂部寫下:using YourProjectName.Helpers。在此之後,您可以使用此幫助程序來呈現圖像

+0

我試過返回視圖(路徑,「image/jpeg」);在View中渲染圖層。它會拋出找不到圖像的錯誤。 – kk1076

+0

@ kk1076,editied我的回答 –

+0

如何使用這個Htmlhelper代碼。我在我的控制器中使用了這個,但它說@ Html.Imager錯過了程序集或引用。 – kk1076