我有一个错误的对象引用没有设置为一个对象的实例

本文关键字:设置 一个对象 实例 有一个 错误 对象引用 | 更新日期: 2023-09-27 18:01:36

'/'应用程序服务器错误。

对象引用未设置为对象的实例。

描述:在执行过程中发生未处理的异常当前的web请求。请查看堆栈跟踪中有关错误及其起源的更多信息代码。

Exception Details: 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>

我有一个错误的对象引用没有设置为一个对象的实例

如果你在你的学校类中添加一个构造函数,它将消除异常,例如;

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。

我建议你阅读一下lazy/eager loading。你的section根本不会被加载到模型中…

相关文章: