2016-07-13 5 views
0

SQL Serverデータベースから画像(varbinary)を取得して、linqクエリを使用して表示しようとしています。ここでアクションからビューに画像を送信していますが、asp.net mvcでエラーが発生しました

は私のアクションコントローラです:

public ActionResult show_pics() 
{ 
    DBEntities db = new DBEntities(); 

    // get one image:: 
    byte[] item = (from f in db.Images 
        where f.Name.Contains("5.jpg") 
        select f.ImageContent).First(); 

    // get an image bytes 
    var a = byteArrayToImage(item); //image.dal 

    return View(a); 
} 

ここに私の見解です:

@model IEnumerable<Cygenus_website.Models.images> 

@{ 
    ViewBag.Title = "show_pics"; 
} 

<h2>View_photos</h2> 
<table> 
    <tr> 
     @foreach(var item in Model) 
     { 
      <td> 
       @{ 
        // converting to string 
        var base64 = Convert.ToBase64String(item.ImageBytes); 
        var imgsrc = string.Format("data:image/jpg;base64,{0}", base64); 
       } 

       <img src="@imgsrc" style="max-width:100px;max-height:100px" /> 
      </td> 
} 

私は例外を取得:

辞書に渡されるモデルアイテムはタイプ「システムであります.Drawing.Bitmap 'が必要ですが、この辞書には' System.Collections.Generic.IEnumerable`1というモデル項目が必要です[Cygenus_website.Models.images ] '。

私はそれがIEnumerableを受け入れています一方、表示する画像を渡していますが、私はIEnumerableまたは他のソリューションに画像を変換する方法として何をすべきかわからないことを知っていますか?

ありがとうございました。

Psと私は

+0

ASP.NET MVCに新しいです、私たちは 'byteArrayToImage()' – dstepan

+0

公共System.Drawing.Image byteArrayToImage(バイト[] byteArrayIn) { MemoryStreamをミリ秒=のコードを見ることができます新しいMemoryStream(byteArrayIn); System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms); return returnImage; } –

答えて

0
@model IEnumerable<byte[]> 

@{ 
    ViewBag.Title = "show_pics"; 
} 

<h2>View_photos</h2> 
<table> 
    <tr> 
     @foreach(var item in Model) 
     { 
      <td> 
       @{ 
        // converting to string 
        var base64 = Convert.ToBase64String(item); 
        var imgsrc = string.Format("data:image/jpg;base64,{0}", base64); 
       } 

       <img src="@imgsrc" style="max-width:100px;max-height:100px" /> 
      </td> 
} 

    public ActionResult show_pics() 
{ 
    DBEntities db = new DBEntities(); 
    // get one image:: 
    List<byte[]> images= (from f in db.Images 
        where f.Name.Contains("5.jpg") 
        select f.ImageContent).ToList(); 

    // get an image bytes 
    //var a = byteArrayToImage(item); //image.dal 

    return View(images); 
} 
+0

ありがとうございました。 Besttt –

+0

この方法でデータベース内のすべてのイメージを表示する方法を教えてください。 –

関連する問題