0

データベースから 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: コントローラーでイメージ値の割り当てを取得し、それをバイト配列で取得して、このようにビューに戻します。

        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: このようにビューにタグを追加しました。これにより、1 つの画像のみが表示されます。

すべての画像を表示し
、ショッピング カートのようにフィルター (昇順で並べ替え、categoryId で降順) に関して画像を操作したいと考えています。

誰でも私に解決策を教えてもらえますか?

4

1 に答える 1

1

すべての画像を個別に取得する必要があります。return ステートメントは、現在の関数を終了します。

個人的には、画像をファイル システムに保存し、それらへのパスをImageUrl注釈付きのモデル プロパティに保存します。

  • 画像はモデルのプロパティになるため、DisplayFor を作成するだけです。
  • 画像をデータベースに保存する場合。データベースは大きくなり、遅くなります。
于 2012-10-22T13:41:34.747 に答える