En iyi yanıtlayıcılar
Veritabanındanki image tipin kodda tanımlanması nasıl olur?

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
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
- Düzenleyen Önay YALÇINERModerator 29 Ağustos 2013 Perşembe 07:18
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 2 Eylül 2013 Pazartesi 16:36
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
-
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
-
Ş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
-
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).Picturedaha kolay ve hızlıdır.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 26 Ağustos 2013 Pazartesi 20:36
-
-
-
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
- Düzenleyen Önay YALÇINERModerator 29 Ağustos 2013 Perşembe 07:18
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 2 Eylül 2013 Pazartesi 16:36