我正在研究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模型类的强类型。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:8)
这是由于LINQ的延迟执行。在您尝试访问它们之前,不会计算Model.Template的结果,在这种情况下,db.Template超出了视图范围。
您可以使用ToList()
至ToArray()
和ToDictionary()
与db.Templates
一起使用。
您的Controller的代码应如下所示:
public ActionResult Index()
{
HomeModel model = new HomeModel();
model.Template = db.Templates.ToList();
return View(model);
}