2012-10-22 3 views
0

데이터베이스에서 MVC4의 이미지를 표시하는 방법.linq을 사용하여 MVC4의 이미지 데이터를 필터링하는 방법

1 단계 : 내 코드에서 데이터를 검색하고 배열 클래스에 배치하십시오.

public class ImageTable 
{ 
    public string ImageId { get; set; } 
    public string CategoryId { get; set; } 
    public byte[] Image { get; set; } 
} 

public class DataAcceess 
{ 
    public ImageTable[] GetImages() 
    { 
     ImageTable[] Images = null; 
     SqlConnection Conn = new SqlConnection("Data Source=;Initial Catalog=;UserID=;Password=;"); 

     Conn.Open(); 
     //SqlCommand Cmd = new SqlCommand("Select [Product ID],ImageView1 From Cpecial_Image_tbl", Conn); 

     SqlCommand Cmd = new SqlCommand("Select b.[Category ID],a.[Product ID], a.[ImageView1] from Cpecial_Image_tbl as a inner join [Cpecial_Product_tbl] as b ON a.[Product ID]=b.[Product ID]", Conn); 

     SqlDataReader Reader = Cmd.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Load(Reader); 
     Images = new ImageTable[dt.Rows.Count]; 
     int i = 0; 
     foreach (DataRow Dr in dt.Rows) 
     { 
      Images[i] = new ImageTable() 
      { 
       ImageId = (string)Dr["Product ID"], 
       CategoryId = (string)Dr["Category ID"], 
       Image = (byte[])Dr["ImageView1"] 
      }; 
      i = i + 1; 
     } 


     Conn.Close(); 
     return Images; 
    } 

단계 2 : 컨트롤러는 바이트의 배열에이를 이미지 값을 할당 retreive이 같은보기로 복귀.

 public ActionResult Index(string id) 
     { 

      // var image = db.Categories.First(m => m.CategoryID == id).Picture; 

      DataAcceess objContext = new DataAcceess(); 

      //byte[] Image = (from a in Images select a.Image.ToArray()); 


      byte[] a; 

      foreach (var item in objContext.GetImages()) 
      { 
       a = item.Image; 
       return File(a, "Image/jpg"); 
      } 

       return View(); 
     } 

3 단계 : 나는 단지 하나의 이미지를 보여줍니다이 다음과 같이보기에 태그를 추가했습니다.

장바구니처럼 모든 이미지를 표시하고 필터
(오름차순 정렬, catagoryId 제외) 이미지를 조작하고 싶습니다.

나에게 해결책을 줄 수 있습니까?

답변

1

모든 이미지를 개별적으로 검색해야합니다. return 문은 현재 위치에서 함수를 종료합니다.

개인적으로 파일 시스템의 이미지와 경로를 ImageUrl 주석이 달린 모델 속성에 저장합니다.

  • 그럼 이미지가 모델의 속성이기 때문에 DisplayFor를 만들 수 있습니다.
  • 데이터베이스에 이미지를 저장하는 경우. 데이터베이스가 커지고 느려질 것입니다.
관련 문제