2012-12-09 125 views
4

我的代碼已將生成的Qr代碼圖像生成到.NET Bitmap對象中。當按下頁面上的按鈕,像這樣產生這種情況的代碼被稱爲:從Bitmap對象將圖像呈現到ASP.NET MVC網頁上

public ActionResult GenerateQrCode() 
    { 
     Bitmap qrCodeImage = Generate(); 
     return RedirectToAction("QrCodeGenerator"); 
    } 

這是在MVC控制器,用於在網頁的方法。

當按鈕被按下時,圖像被生成,我們被導航回頁面。

因此,從這裏開始,我需要採取哪些步驟將此位圖圖像輸出到我的網頁(.cshtml文件)。請記住,我正在使用ASP.NET MVC。

我在網上看到的一件事是人們將圖像保存到'Response.OutputStream'中。我不太確定這是否與ASP.NET MVC相關。

感謝

回答

4

控制器動作需要返回FileStreamResult。這是你如何做到這一點

public ActionResult GenerateQrCode() 
{ 
    Bitmap qrCodeImage = Generate(); 
    //write your own methode to convert your bit map to byte array, here is a link 
    //http://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array-in-c 
    byte[] byteArray = ConvertToByteArray(qrCodeImage); 
    return File(byteArray, "image/jpeg"); 
} 

而且在你看來,你可以做這樣的事情

<img src="@Url.Action("GenerateQrCode")" alt="qr code" /> 
+0

這很好地工作!儘管如此,如果我仍然想用按鈕來生成圖像,並返回到同一頁面(通過返回重定向),我怎麼能將FileContentResult保存到一個變量,然後在我的視圖中使用它? –

+1

如果你想讓你的按鈕做的只是刷新你的圖像,那麼我會建議使用Javascript來更新圖像標籤的圖像路徑(也許更新一個id),這應該重新加載圖像。將FileContentResult保存到一個變量中,這個概念是錯誤的,就像保存一個Response結果並使用它來使用視圖,這根本沒有意義。 – Jack

+1

如果您認爲這有助於您解決問題,請將其標記爲答案嗎? – Jack