2013-01-23 48 views
1

我以二進制格式存儲數據庫中的幾張圖像,現在我想在我的視圖中顯示這些圖像,我們如何將這些圖像從二進制格式轉換爲圖像格式?從sql server數據庫中取回圖像並在MVC3中顯示

這是我的動作在我的控制器menthod

  public ActionResult DislpayAllImage() 
      { 
      DataSet dsa = new DataSet(); 
      dsa = objImage.getAllImages(); 
      DataTable dt = new DataTable(); 
      dt = dsa.Tables[0]; 
      if (dt != null) 
      { 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       Byte[] image = (Byte[])dt.Rows[i]["UsImage"]; 
       return File(image, "image/jpg"); 
      } 
      } 
     return View(); 



    } 

這是我在模型

代碼
 public DataSet getUserImage(int Id) 
    { 
     DataSet ds = new DataSet(); 
     try 
     { 
      DbCommand db = dbcon.GetStoredProcCommand("GetImage"); 
      dbcon.AddInParameter(db, "@Id", DbType.Int16, Id); 
      db.CommandType = CommandType.StoredProcedure; 
      return ds = dbconstr.ExecuteDataSet(dbCmd); 
     } 
     catch(Exception ex) 
     { 
      return ds = null; 
     } 
    } 

視圖

@foreach(var image in ViewData.Images) 
{ 
    <img src="@Url.Action("DislpayImage", "Home",new { id = image.ImageID })" /> 
} 

我怎樣才能在剃刀視圖顯示我的圖像,也是上面的代碼好嗎?

回答

2

你需要從視圖像這樣打電話給你的控制器的動作(DislpayImage()):

<img src="<%= Url.Action("DislpayImage", "Controller") %>" alt="myimage" /> 

<img src="@Url.Action("DislpayImage", "Controller")" alt="myimage" /> 

希望它可以幫助你。


編輯

只是傳遞要顯示給控制器動作

public ActionResult DislpayImage(int id) 
    { 
     DataSet dsa = new DataSet(); 

     dsa = objImage.getUserImage(id); 
     var imagedata = dsa.Tables[0].Columns["MyImage"]; 
     return File(imagedata, "image/jpg"); 

    } 

現在傳你想在視圖中顯示圖像的ID圖像的ID,像這樣:

<img src="@Url.Action("DislpayImage", "Controller", new { id="2" })" alt="myimage" /> 

現在你將得到th e圖像的ID爲2.

+0

這是什麼字段? –

+0

如果沒有圖像,則會顯示「myimage」文本,您可以刪除該文件。 –

+0

我在此行中返回錯誤返回文件(imagedata,「image/jpg」);作爲最好的重載方法....有一些無效的參數, –

0
<% foreach(var image in ViewData.Images) { %> 
    <%= Html.Image(Url.Action("Show", "Image", new { id = image.ImageID })) %> 
<% } %> 



public class ImageController : Controller 

    { 

     public void Show(string id) 

     { 

      Image image = GetImage(id); 


      Response.Buffer = True; 
      Response.Clear(); 
      Response.ContentType = "image/gif"; 
      Response.BinaryWrite(image.Data); 
      Response.End(); 

     } 

    } 

此回覆僅僅是來自另一個論壇的答案的副本。 這不是我自己的。我在這裏粘貼它來幫助你和其他人在這個論壇 與同樣的問題。

以下是主要環節:http://forums.asp.net/post/2264885.aspx

相關問題