7

我正在研究 MVC-3。我认为我面临以下异常:

cannot perform runtime binding on a null reference

模型类

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

查看代码

@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>

控制器

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

    model.Template = db.Templates();

    return View(model);
}

我的视图是 HomeModel 模型类的强类型。谁能帮我解决这个问题?

4

1 回答 1

8

这是由于延迟执行 LINQ。Model.Template 的结果在您尝试访问它们之前不会被计算,在这种情况下 db.Template 超出了视图的范围。您可以通过使用ToList()toToArray()ToDictionary()with来做到这一点db.Templates

您的控制器代码应如下所示:

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

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

    return View(model);
}
于 2012-12-19T23:19:12.573 回答