Translate

Wednesday 30 January 2013

Diplay the Image from Backend to the Razor view by using Handler.


I'm retrieving the image display by using image hadler and show the image in Razor view...

*Image Display Using Handler From BackEnd*

Model Classe:

ImageData.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVC3HandlerImageDisplay.Models
{
    public class ImageData
    {
        public int Id { get; set; }
    }
}


Cerate a ImageHandlerClass in model Folder

ImageHandler.ashx


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;

namespace MVC3HandlerImageDisplay.Models
{
    /// <summary>
    /// Summary description for ImageHandler
    /// </summary>
    public class ImageHandler : IHttpHandler
    {
        const string connect = @"Data Source=JAGAN-PC;Initial Catalog=MVC3;Integrated Security=True";
        public void ProcessRequest(HttpContext context)
        {
            try
            {

                SqlConnection con = new SqlConnection(connect);
                con.Open();
                string imageid = HttpContext.Current.Request.QueryString["Photo_ID"].ToString();

                SqlCommand cmd = new SqlCommand("select filecontent from filestore where id='" + imageid + "'", con);

                byte[] image_byte = (byte[])cmd.ExecuteScalar();
                con.Close();

                context.Response.ContentType = "image/jpeg";

                context.Response.BinaryWrite((Byte[])image_byte);

                context.Response.End();

            }
            catch
            {
            }

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

Craete A Table in Backend:

Id int
MimeType        varchar(50)
FileName Varchar(50)
FileContent     varbinary(MAX)



Insert the Image(filecontent) value as a varbinary formate.
if u not insert it won’t display any images..



Controller Class:


ImageDataController.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC3HandlerImageDisplay.Models;

namespace MVC3HandlerImageDisplay.Controllers
{
    public class ImageDataController : Controller
    {
        //
        // GET: /ImageData/

        public ActionResult Display()
        {
            ImageData img = new ImageData();
            img.Id = 6;
            return View(img);
        }

    }
}


Views:

Display.cshtml

@{
    ViewBag.Title = "Display";
}

<h2>Display Particular Image Using Handler From Backend</h2>

<img src = "../../Models/ImageHandler.ashx?Photo_ID=@Model.Id" width = "400 px "  height = "500px "id = "im"/>

No comments:

Post a Comment