2012-12-19 6 views
7

Sto lavorando su MVC-3. Sto affrontando la seguente eccezione il mio punto di vista:L'eccezione nella vista MVC-3 non può eseguire il binding a runtime su un riferimento null

cannot perform runtime binding on a null reference 

classe del modello

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

Visualizza codice

@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); 
} 

La mia vista è fortemente digitata nella classe del modello HomeModel. Qualcuno può aiutarmi a risolverlo?

+0

cosa è db.Templates? Diverso da null, cioè. –

+0

Puoi eseguire il debug e controllare il valore di db.Templates() nell'azione Index? –

+0

sì e questo valore non è nullo – user1740381

risposta

8

Ciò è dovuto all'esecuzione differita di LINQ. I risultati di Model.Template non vengono calcolati finché non si tenta di accedervi e in questo caso db.Template non rientra nella portata della vista. È possibile farlo utilizzando ToList() a ToArray() e ToDictionary() con db.Templates.

Il codice del controller dovrebbe essere simile:

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

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

    return View(model); 
} 
Problemi correlati