对象引用未设置为对象的实例。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪 有关错误及其来源的更多信息 码。
异常详细信息:System.NullReferenceException:不是对象引用 设置为对象的实例。
Source Error:
Line 29: <th></th>
Line 30: </tr>
Line 31: @foreach (var sections in Model.Sections)
Line 32: {
Line 33: <tr>
我的模特
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace TechFactorsLMSV2.Models
{
public class School
{
public int ID { get; set; }
public string SchoolName { get; set; }
public ICollection<Section> Sections { get; set; }
}
public class Section
{
public int ID { get; set; }
public string SectionName { get; set; }
public ICollection<Student> Students { get; set; }
}
public class Student
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string Address { get; set; }
public DateTime DateEnrolled { get; set; }
}
public class LMSDBContext : DbContext
{
public DbSet<School> Schools { get; set; }
public DbSet<Section> Sections { get; set; }
public DbSet<Student> Students { get; set; }
}
}
我的控制器
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TechFactorsLMSV2.Models;
namespace TechFactorsLMSV2.Controllers
{
public class SchoolsController : Controller
{
private LMSDBContext db = new LMSDBContext();
//
// GET: /Schools/
public ActionResult Index()
{
return View(db.Schools.ToList());
}
public ActionResult Detail(int id)
{
var model = db.Schools.Single(d => d.ID == id);
return View(model);
}
}
}
我的观点
TechFactorsLMSV2.Models.School
@{
ViewBag.Title = "Detail";
}
<h2>@Model.SchoolName</h2>
@Html.ActionLink("Add Section", "Create", "Section", new { SchoolId = @Model.ID }, null
}
<table>
<tr>
<th>Sections</th>
<th></th>
</tr>
@foreach (var sections in Model.Sections)
{
<tr>
<td>@sections.SectionName</td>
<td>
</td>
</tr>
}
</table>
答案 0 :(得分:0)
我建议阅读lazy / eager loading。您的部分根本不会加载到模型中......
答案 1 :(得分:0)
如果你向学校班级添加一个构造函数,那么它就会消除这个例外;例如,
public class School
{
public int ID { get; set; }
public string SchoolName { get; set; }
public ICollection<Section> Sections { get; set; }
public School()
{
Sections = new List<Section>();
}
}
但是,正如@Peter所说,你需要考虑如何填充,以及通过所有不是为了SO。