【问题标题】:Relationship with new property in model与模型中的新属性的关系
【发布时间】:2023-04-04 09:51:01
【问题描述】:

我添加了一个新属性

public List<string> DeclinedMembers { get; set; }

我删除了我的数据库并重新初始化它。但是当尝试在控制器的列表中添加一些东西时,我不断在 DeclinedMembers 行抛出这个异常。

System.NullReferenceException: 'Object reference not set to an instance of an object.'
Scheduler.Models.Event.DeclinedMembers.get returned null.

为什么找不到这个新属性?我错过了一步吗? 模型和控制器见下文

型号:

public class Event
    {
        [Required]
        public int EventId { get; set; }

        [ForeignKey("UserId")]
        public virtual SchedulerUser SchedulerUser { get; set; }

        [MaxLength(50)]
        public string EventCreator { get; set; }

        public List<string> EventMembers { get; set; }

        public List<string> DeclinedMembers { get; set; }

        [Required]
        [MaxLength(100)]
        public string Subject { get; set; }

        [MaxLength(400)]
        public string Description { get; set; }

        [Required]
        public DateTime StartTime { get; set; }

        public DateTime? EndTime { get; set; }

        [Required]
        public bool IsFullDay { get; set; }

        [Required]
        public bool AcceptOrDecline { get; set; }
    }

控制器(创建):

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("EventId,UserId,EventCreator,EventMembers,DeclinedMembers,Subject,Description,StartTime,EndTime,IsFullDay,AcceptOrDecline")] Event @event)
        {
            if (ModelState.IsValid)
            {
                @event.SchedulerUser = await _userManager.GetUserAsync(HttpContext.User); //This also sets the UserId for the event.

                var userName = @event.SchedulerUser.UserName;
                @event.EventCreator = userName;
                @event.AcceptOrDecline = true;
                @event.DeclinedMembers.Add("foo");

                _context.Add(@event);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(@event);
        }

【问题讨论】:

    标签: c# asp.net-core exception model-view-controller controller


    【解决方案1】:

    试试这个:

    if( @event.DeclinedMembers==null) @event.DeclinedMembers=new List<string>();
    
    @event.DeclinedMembers.Add("foo");
    

    【讨论】:

    • 是的,只需要初始化它。哇哈哈。谢谢!
    • 非常感谢。只要你接受答案就足够了。
    猜你喜欢
    • 2015-02-07
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多