2012-12-19 3 views
7

Ich arbeite an MVC-3. Ich bin vor die folgende Ausnahme auf meiner Ansicht:Ausnahme in MVC - 3 Ansicht kann keine Laufzeitbindung für eine Nullreferenz

cannot perform runtime binding on a null reference 

Modellklasse

public class HomeModel 
    { 
     public IEnumerable<Html> Template { get; set; } 
    } 

Code anzeigen

@model Project.Models.HomeModel 

    @{ 
     ViewBag.Title = "Home Page"; 
     int i = 0; 
    } 
    <div class="container"> 
      @foreach (var e in Model.Template) //getting exception on this foreach loop 
      { 
       //loop content  
      } 
    </div> 

-Controller

public ActionResult Index() 
{ 
    HomeModel model = new HomeModel(); 

    model.Template = db.Templates(); 

    return View(model); 
} 

Meine Ansicht ist stark in die HomeModel-Modellklasse eingetippt. Kann mir bitte jemand helfen, das Problem zu lösen?

+0

Was db.Templates ist:

Code Ihr Kontrolleurs aussehen sollte? Anders als null, das ist. –

+0

Können Sie den Wert von db.Templates() in Ihrer Indexaktion debuggen und überprüfen? –

+0

ja und dieser Wert ist nicht null – user1740381

Antwort

8

Dies ist aufgrund der verzögerten Ausführung von LINQ. Die Ergebnisse von Model.Template werden erst berechnet, wenn Sie versuchen, auf sie zuzugreifen, und in diesem Fall ist db.Template nicht in der Ansicht. Sie können dies tun, indem Sie ToList() zu ToArray() und ToDictionary() mit db.Templates verwenden.

public ActionResult Index() 
{ 
    HomeModel model = new HomeModel(); 

    model.Template = db.Templates.ToList(); 

    return View(model); 
} 
Verwandte Themen