Yazdığım kod null reference exception hatası döndürüyor. Ne yapabilirim?

ahmetumeyr (1) 5 yıl önce sordu

 Bu Kod Anasayfada Çalışıyor. Fakat İkinci Bir sayfada Açmak isteyince null reference exception hatası alıyorum. Yardımcı olur musunuz?

public ActionResult Index()

        {

            ViewBag.Title = "Anasayfa";

            return View(new HomeVm

            {

                Sliderlist = Db.Sliders.ToList(),

                OemList = Db.Oems.ToList(),

                AnaUrunlerList = Db.Urunlers.Where(d => d.Anasayfa == true).ToList(),

                MarkaList = Db.Markas.ToList(),

                FooterList = Db.Footers.ToList(),

                SosyalList = Db.Sosyalmedias.ToList(), 

                AboutList = Db.Abouts.Where(d => d.Baslik == "HAKKIMIZDA").ToList()

            });

        }

using System.Collections.Generic;


namespace emotorsite.Models

{

    public class HomeVm

    {

        public List<Slider> Sliderlist { get; set; }

        public List<Urunler> AnaUrunlerList { get; set; }

        public List<Oem> OemList { get; set; }


        public List<Marka> MarkaList { get; set; }

        public List<Footer> FooterList { get; set; }

        public List<Sosyalmedia> SosyalList { get; set; }

        public List<About> AboutList { get; set; }


        public List<About> AboutList1 { get; set; }

        public List<Personel> PersonelList { get; set; }

        public List<Contact> ContactList { get; internal set; }

    }

}



<footer id="footer" class="footer footer-2">

    <!-- Footer Info

    ============================================= -->

    <div class="footer-info">

        <div class="container">

            <div class="row">


                @foreach (var Footer in Model.FooterList)

                {



                    <div class="col-xs-12 col-sm-6 col-md-3">

                        <div class="panel-info">

                            <div class="info-icon">

                                <i class="icon icon-Shield"></i>

                            </div>

                            <div class="info-content">

                                <h4>@Footer.Baslik</h4>

                                <p>@Footer.Aciklama</p>

                            </div>

                        </div>

                    </div>                      


                }


                <div class="footer-widget">

                    <div class="container">

                        <div class="row">


                            <div class="col-xs-12 col-sm-12 col-md-4 footer-widget-about">

                                @foreach (var About in Model.AboutList)

                                {

                                    <div class="footer-widget-title">

                                        <h5>@About.Baslik</h5>

                                    </div>

                                    <div class="footer-widget-content">

                                        <p>@About.Aciklama</p>


                                    </div>

                                }

 

Toplam 2 cevap


alattin (17125) 5 yıl önce cevapladı

null reference exception hatasını öncelikle ne olduğunu anlarsan bu tür null reference exception hatalarını kolayca çözebilirsin.

null reference exception hatası null yani değer atanmamış nesneler yüzünden ortaya çıkar. Örneğin senin kodunda şöyle bir ifade var:

Controller içinde şunu demişsin.

  FooterList = Db.Footers.ToList(),

Daha view içinde şunu kullanmışsın:

@Footer.Baslik

Peki, Footer boşsa ne dönecek? Diyelim ki Databasede hiç br kayıt yok. O zaman Footer hiç olmayacak. Doğal olarak da Footer.Baslik anlamsız bir ifadeye dönüşecek.

Null Reference hatası hangi nesne de gönüyor? Onu bul ve onun üzerinden hata gidermeye çalış. Verdiğin kodlardan bir şey söylemek mümkün değil.

alattin 5 yıl önce

@ahmetumeyr ben Footer ile ilgili kısmı örnek olarak vardim sadece mantığını anlayabilmen için. hatayı Html.RenderPartial("Footer") alıyorsan, tıkladığın sayfanın Action'ında footer için gerekli modeli getirmiyorsundur muhtemelen. Html.RenderPartial("Footer") içinde FooterList kullanıyorsan tıkladığın sayfanın action bölümünde de bunu doldurmalısın.

ahmetumeyr (1) 5 yıl önce cevapladı

İlginize Teşekkürler;

Footer dolu bir database. 

Sayfa altında footer ı  @{Html.RenderPartial("Footer");} olarak çekiyorum.

Anasayfada sorgu düzgün çalışıyor, başka herhangi bir sayfaya gittiğimde sorguyu null dönderiyor.