【发布时间】:2022-01-09 15:16:56
【问题描述】:
我正在使用 ASP.NET MVC 来让用户参加考试,每个考试都包含一个问题列表,每个问题都包含多个答案以形成一个选择题。这是我的模型
public class Exam
{
[Key]
public string ExamID { get; set; }
public string Name { get; set; }
public Class Class { get; set; }
public int Time { get; set; }
public DateTime Deadline { get; set; }
public virtual ICollection<Question> Questions { get; set; }
public bool Suffer { get; set; }
}
public class Question
{
public int ID { get; set; }
public string question { get; set; }
public ICollection<String> Answer { get; set; }
public int CorrectAns { get; set; }
}
当我创建包含多个问题的考试时似乎很好,但是当我想从问题中获取答案列表时,它会为我的答案列表返回 null。C# 是否允许将列表放入列表中,或者它来自另一个列表问题?
这是我在控制器中使用的创建和获取考试的代码: [HttpPost]
public JsonResult Create(Exam exam,string ClassID)
{
if (exam.Time.ToString()!=null ||exam.Deadline==null)
{
exam.Deadline = new DateTime(1990,1,1);
}
Class @class = db.Classes.FirstOrDefault(x => x.ClassID == ClassID);
exam.Class = @class;
exam.ExamID = ClassID +exam.Name;
db.Exams.Add(exam);
int a=db.SaveChanges();
return Json(a);
}
public ActionResult Details(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Exam exam = db.Exams.Find(id);
if (exam == null)
{
return HttpNotFound();
}
foreach(Question question in exam.Questions)
{
Debug.WriteLine(question.Answer.Count);
}
我使用 Debug.WriteLine 来检查是否有任何有问题的答案字符串,并在这一步返回 null
【问题讨论】:
-
你能告诉我们你用来访问列表的代码吗?
-
是的,您可以拥有一个列表列表。您能否展示创建考试然后尝试提取答案列表的代码?
-
我在帖子中编辑并添加了我的代码
-
看起来你只是在访问对象本身而不是关系尝试使用 .Include()
.Include(blog => blog.Posts)docs.microsoft.com/en-us/dotnet/api/… -
试图用 Exam = db.Exams.Include(x => x.Questions).FirstOrDefault(x => x.ExamID == id);但它给出了同样的问题
标签: c# asp.net-mvc list