Asp.net mvc 插入数组时,对象引用未设置为对象的实例

Asp.net mvc 插入数组时,对象引用未设置为对象的实例,asp.net-mvc,Asp.net Mvc,我正试图将一个数组从视图发送到控制器,以将其保存在数据库中 用户将选中两个复选框,每个复选框都应保存在自己的行中 但是,没有正确发送任何内容,我收到了此消息 System.NullReferenceException:对象引用未设置为对象的实例 我有一个非常简单的表,它包含以下内容: public class Answer { public int Id { get; set; } public int OptionID { get; set; } public int

我正试图将一个数组从视图发送到控制器,以将其保存在数据库中

用户将选中两个复选框,每个复选框都应保存在自己的行中

但是,没有正确发送任何内容,我收到了此消息

System.NullReferenceException:对象引用未设置为对象的实例

我有一个非常简单的表,它包含以下内容:

public class Answer
{
    public int Id { get; set; }
    public int OptionID { get; set; }
    public int QuestionID { get; set; } = 1;
}
在视图中,我有一个复选框列表,其值如下:

<input type="checkbox" name="OptionID[0]" value="1" class="single-checkbox"> checkbox 1<br>
<input type="checkbox" name="OptionID[1]" value="2" class="single-checkbox"> checkbox 2<br>
<input type="checkbox" name="OptionID[2]" value="3" class="single-checkbox"> checkbox 3<br>
<input type="checkbox" name="OptionID[3]" value="4" class="single-checkbox"> checkbox 4<br>
复选框1
复选框2
复选框3
复选框4
在我的控制器中:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create(List<Answer> answers)
{
        if (ModelState.IsValid)
        {
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                foreach (var i in answers)
                {
                    db.Answers.Add(i);
                }
                await db.SaveChangesAsync();
            }
            return RedirectToAction("Index");
        }
        return View(answers);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建(列表答案)
{
if(ModelState.IsValid)
{
使用(ApplicationDbContext db=new ApplicationDbContext())
{
foreach(答案中的var i)
{
db.答案.加入(i);
}
等待db.saveChangesSync();
}
返回操作(“索引”);
}
返回视图(答案);
}

使用
name=“[0]。OptionID”
name=“[1]。OptionID”
等(但为什么要手动生成html?应该使用生成强类型视图的视图模型(请参阅example@StephenMuecke,谢谢你的帮助。它运行得很好。我正在尝试生成它,但大多数教程实际上没有帮助。但通过你的评论,实际上为我解决了两个问题。非常感谢。@StephenMuecke现在它可以工作了。如果我单独选择第一个选项,第一个和第二个选项。但是如果我尝试任何方法g否则它将不起作用,我得到相同的错误链接中的代码工作正常:)我假设您有其他代码没有显示导致问题,并且如果您在问题中显示的是您仅有的表单控件,那么如果您选择了2和3(因为集合索引器必须是基于零且连续的),它将不起作用@StephenMuecke这是我仅有的表单控件,但我想如果集合索引器必须为零,它将不起作用