none
Veritabanındanki image tipin kodda tanımlanması nasıl olur? RRS feed

  • Soru

  • Arkadaşlar NortWND varitabnını indirdim. Buradaki category tablosundaki Picture alanı image tipinde tanımlı. Bu şimdi ben asp.net projemde kullanıcam DTO da şu şekilde tanımladım 

    public byte[] Picture { get; set; }

    Ama veritbanında bu alan boş geçilebilir diye belirtilmiş. Şimdi ben bunu burada nasıl belirticem?

    Ayrıca bunu Clinet da image de url verirlen nasıl bir şey yapıcam ?


    ozdemiryazilim


    • Düzenleyen pcci 25 Ağustos 2013 Pazar 12:32
    25 Ağustos 2013 Pazar 12:29

Yanıtlar

  • Her durumda bir şekilde database den CategoryId alıyorsunuz dimi, o idyi imageurl ye eklemelisiniz. kod tarafında yapıyorsanız;

    img1.ImageUrl = "~/ImageHandler.ashx?id=" + dbdenGelenId;

    şeklinde yapabilirsiniz.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC


    29 Ağustos 2013 Perşembe 07:18
    Moderatör

Tüm Yanıtlar

  • allow null ise bişey yapmana gerek yok.

    kategoriye ait görseli byte[] olarak servis eden bir ashx (generic handler) oluştur, buna querystring ile Id yi parametre olarak gönder. ashx içinde veritabanından bu id ye göre çek ve BinaryWrite ile streama bas. image kontrollerinde ImageUrl ye de bu ashx dosyasını göster


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    26 Ağustos 2013 Pazartesi 06:31
    Moderatör
  • Ben ashx dosyasında şu kodu yazdım.

    public class ImageHandler : IHttpHandler
      {
        NORTHWNDEntities db = new NORTHWNDEntities();
        public void ProcessRequest(HttpContext context)
        {
          context.Response.ContentType = "image/jpeg";
          context.Response.BinaryWrite(db.Categories.Where(x => x.CategoryID == 1).SingleOrDefault().Picture);
          context.Response.End();
        }
    
        public bool IsReusable
        {
          get
          {
            return false;
          }
        }
      }

    Client da şu şekilde dosyayı çağırdım. 

    <asp:Image runat="server" ID="img1" ImageUrl='<%# "ImageHandler.ashx" %>' />

    Fakat gösterme işlemi gerçekleşmedi. Burada illa ki sizin söylediğiniz gibi QueryString mi kullanmak lazım. Ben .ashx dosyası içersinde custom id tanımlayamazmıyım?


    ozdemiryazilim

    26 Ağustos 2013 Pazartesi 18:47
  • Şimdi şu şekilde denedim ama gene olmadı.

    [WebService(Namespace = "http://tempuri.org/")]
      [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
      public class ImageHandler : IHttpHandler
      {
        NORTHWNDEntities db = new NORTHWNDEntities();
        public void ProcessRequest(HttpContext context)
        {
          int id = Convert.ToInt32(context.Request.QueryString["id"].ToString());
          context.Response.ContentType = "image/jpeg";
          context.Response.BinaryWrite(db.Categories.Where(x => x.CategoryID == id).SingleOrDefault().Picture);
          context.Response.End();
        }
    
        public bool IsReusable
        {
          get
          {
            return false;
          }
        }
      }

    <asp:Image runat="server" ID="img1" ImageUrl='<%# "ImageHandler.ashx?id="+1 %>' />


    ozdemiryazilim

    26 Ağustos 2013 Pazartesi 18:57
  • handleriniz doğru sadece çağırırken küçük bir hata yapmışsınız;

    öncelikle handleri denemek için browsere elle .../ImageHandler.ashx?id = 1 yazın resim görünecek mi, tabi 1 idli kayıt olduğundan emin olun

    daha sonra göstermek için için;

    <asp:Image runat="server" ID="img1" ImageUrl='<%# Eval("CategoryId", "ImageHandler.ashx?id={0}") %>' />

    şeklinde kullanın.

    Not: Bu arada Where biraz yavaş çalışır aklınızda olsun; 

    db.Categories.Find(Id).Picture

    daha kolay ve hızlıdır.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC



    26 Ağustos 2013 Pazartesi 20:32
    Moderatör
  • Ben Image kontrolüne dediğiniz şekilde binding yapamam. Çünkü, benim client tarafında herhangi bir id verme gibi bir durumum yok. Mesela şöyle düşünün, categorinin resimleri sayfa ilk yüklendiğinde çalışacak. Bu şekilde nasıl yaparım?

    ozdemiryazilim

    27 Ağustos 2013 Salı 17:45
  • yapamdım ya bunun çalışan bir örneğini paylaşabilir misiniz?

    ozdemiryazilim

    27 Ağustos 2013 Salı 17:50
  • Her durumda bir şekilde database den CategoryId alıyorsunuz dimi, o idyi imageurl ye eklemelisiniz. kod tarafında yapıyorsanız;

    img1.ImageUrl = "~/ImageHandler.ashx?id=" + dbdenGelenId;

    şeklinde yapabilirsiniz.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC


    29 Ağustos 2013 Perşembe 07:18
    Moderatör