• 26-07-2015, 16:42:13
    #1
    Üyeliği durduruldu
    Controller'da dbden çekilen verileri aşagıdaki gibi viewbaglere'e aktarıyorum fakat haliyde tabloda veri yok ise null hata fırlatıyor.başka bir yöntem veya bu hatanın çözümü nasıl olur acaba ?

    StarDocsContext db = new StarDocsContext();
    int senderID = Convert.ToInt32(Session["UserID"]);
    ViewBag.inboxCount = db.Message.Where(i => i.AliciUserID == senderID && i.isRead == false).Count();
    var settings = db.General.FirstOrDefault();

    ViewBag.MetaTitle = settings.SiteTitle;
    ViewBag.MetaDescription = settings.SiteDesc;
    ViewBag.MetaKeywords = settings.SiteKeyw;
  • 26-07-2015, 21:59:10
    #2
    tam olarak hata verdiği yeri de yazsaydın.. Ama büyük ihitmal Count dan geliyordur çünkü where ile yaptığın sorgu null dönmüşse, null olan bir nesnenin count unu alamazsın haliyle..

    şu şekil yapabilirsin kodunu


    StarDocsContext db = new StarDocsContext();
    int senderID = Convert.ToInt32(Session["UserID"]);
    
    var alici= = db.Message.Where(i => i.AliciUserID == senderID && i.isRead == false);
    
    if(alici!=null)
    ViewBag.inboxCount = alici.Count();
    
    var settings = db.General.FirstOrDefault(f=>f);
    
     if(settings != null)
     {
      ViewBag.MetaTitle = settings.SiteTitle;
      ViewBag.MetaDescription = settings.SiteDesc;
      ViewBag.MetaKeywords = settings.SiteKeyw;
     }
  • 26-07-2015, 22:50:02
    #3
    Üyeliği durduruldu
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    tam olarak hata verdiği yeri de yazsaydın.. Ama büyük ihitmal Count dan geliyordur çünkü where ile yaptığın sorgu null dönmüşse, null olan bir nesnenin count unu alamazsın haliyle..

    şu şekil yapabilirsin kodunu


    StarDocsContext db = new StarDocsContext();
    int senderID = Convert.ToInt32(Session["UserID"]);
    
    var alici= = db.Message.Where(i => i.AliciUserID == senderID && i.isRead == false);
    
    if(alici!=null)
    ViewBag.inboxCount = alici.Count();
    
    var settings = db.General.FirstOrDefault(f=>f);
    
     if(settings != null)
     {
      ViewBag.MetaTitle = settings.SiteTitle;
      ViewBag.MetaDescription = settings.SiteDesc;
      ViewBag.MetaKeywords = settings.SiteKeyw;
     }
    evet ertan hocam setting değişkenininde dediğiniz gibi null kontrolü yaparak viewbag'lere verilerileri göndererek view'de çekebiliyorum bu şekil.Öncelikle teşekkür ederim.

    peki bu tür durumlarda örnek benim yaptığım gibi title,desc gibi verileri çekerken başka bir yöntem önerebilir misiniz ? böyle durumlarda her defasında null kontrolü yapmadan sabit verileri çekmek adına.
  • 27-07-2015, 01:29:00
    #4
    bu şekil doğru aslında.. ama şöyle bi eklenti yapabilirsin..

    sorgunun sonuna Select( new {istediğin alanlar})

    ı seçtirebilrisin, böylece null olsa da olmasa da atama yapabilirsin.. yani select ve multi selecti araştır, hatta select in içine custom class da atabilirsin.. yani viewbag.x, viewbag.y .. yerine bir class oluşturup direk select i o class a atayabilirsin..

    sonra da onu model olarak kullanabilirsin.. tabi ondan önce modelin null olup olmadığını kontrol ettirmen gerek