微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

控制器中的 NullReferenceExeption

如何解决控制器中的 NullReferenceExeption

错误

enter image description here

我的控制器抛出异常:

    public class UitgiftesController : Controller
    {
        private readonly ApplicationDbContext _context;

        private UserManager<Medewerker> _userManager;

        //class constructor
        public UitgiftesController(UserManager<Medewerker> userManager)
        {
            _userManager = userManager;
        }

        // GET: Uitgiftes
        public async Task<IActionResult> Index()
        {
            var applicationDbContext = _context.Uitgiftes.Include(u => u.Onderdelen);
            return View(await applicationDbContext.ToListAsync());
        }

        // GET: Uitgiftes/Details/5
        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var uitgiftes = await _context.Uitgiftes
                .Include(u => u.Onderdelen)
                .FirstOrDefaultAsync(m => m.Id == id);
            if (uitgiftes == null)
            {
                return NotFound();
            }

            return View(uitgiftes);
        }

        // GET: Uitgiftes/Create
        public IActionResult Create()
        {
            ViewData["OnderdelenId"] = new SelectList(_context.Set<Onderdelen>(),"Id","Naam");
            return View();
        }

        // POST: Uitgiftes/Create
        // To protect from overposting attacks,enable the specific properties you want to bind to,for 
        // more details,see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("Id,Tijdstip,GewichtKg,Prijs,OnderdelenapparaatId,OnderdelenId,MedewerkerId")] Uitgiftes uitgiftes)
        {
            if (ModelState.IsValid)
            {
                _context.Add(uitgiftes);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            ViewData["OnderdelenId"] = new SelectList(_context.Set<Onderdelen>(),"Naam",uitgiftes.OnderdelenId);
            return View(uitgiftes);
        }

信息来自的控制器:

        private readonly ApplicationDbContext _context;

        public OnderdelensController(ApplicationDbContext context)
        {
            _context = context;
        }

        // GET: Onderdelens
        public async Task<IActionResult> Index()
        {
            return View(await _context.Onderdelen.ToListAsync());
        }

        // GET: Onderdelens/Details/5
        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var onderdelen = await _context.Onderdelen
                .FirstOrDefaultAsync(m => m.Id == id);
            if (onderdelen == null)
            {
                return NotFound();
            }

            return View(onderdelen);
        }

        // GET: Onderdelens/Create
        public IActionResult Create()
        {
            return View();
        }

        // POST: Onderdelens/Create
        // To protect from overposting attacks,Naam,Omschrijving,VoorraadKg,PrijsPerKg")] Onderdelen onderdelen)
        {
            if (ModelState.IsValid)
            {
                _context.Add(onderdelen);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(onderdelen);
        }

我已将数据库中的 onderdelen(components) 的所有内容都设置为 null。

The database does not allow null

我不是把他们之间的关系搞好了吗?

            //Verbinding Many to Many Innameapparaat
            modelBuilder.Entity<Innameapparaat>()
                .HasKey(c => new { c.InnamensId,c.ApparaatId });

            modelBuilder.Entity<Innameapparaat>()
                .HasOne(pt => pt.Innames)
                .WithMany(p => p.Innameapparaats)
                .HasForeignKey(pt => pt.ApparaatId);

            modelBuilder.Entity<Innameapparaat>()
                .HasOne(pt => pt.Apparaten)
                .WithMany(p => p.Innameapparaats)
                .HasForeignKey(pt => pt.InnamensId);


            //Verbinding Many to Many Onderdeelapparaat
            modelBuilder.Entity<Onderdeelapparaat>()
                .HasKey(c => new { c.OnderdelenId,c.ApparaatId });

            modelBuilder.Entity<Onderdeelapparaat>()
                .HasOne(pt => pt.Onderdelen)
                .WithMany(p => p.Onderdeelapparaats)
                .HasForeignKey(pt => pt.ApparaatId);

            modelBuilder.Entity<Onderdeelapparaat>()
                .HasOne(pt => pt.Apparaten)
                .WithMany(p => p.Onderdeelapparaats)
                .HasForeignKey(pt => pt.OnderdelenId);
        }
        public DbSet<RobinGroot.Models.Uitgiftes> Uitgiftes { get; set; }
        public DbSet<RobinGroot.Models.Apparaten> Apparaten { get; set; }
        public DbSet<RobinGroot.Models.Innames> Innames { get; set; }
        public DbSet<RobinGroot.Models.Onderdelen> Onderdelen { get; set; }

我已经搜索过这个问题,但我自己无法解决这个问题,所以我真的可以使用一些帮助来解决这个问题。

解决方法

修复您的控制器构造函数:

private readonly ApplicationDbContext _context;

        private UserManager<Medewerker> _userManager;

        //class constructor
        public UitgiftesController(
                       UserManager<Medewerker> userManager,ApplicationDbContext context
)
        {
            _userManager = userManager;
            _context=context;
        }

和您的选择列表:

  ViewData["OnderdelenId"] = new SelectList(_context.Set<Onderdelen>().ToList(),"Id","Naam");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。