列表中的 ASP.NET MVC C# 列表
Posted
技术标签:
【中文标题】列表中的 ASP.NET MVC C# 列表【英文标题】:ASP.NET MVC C# list inside list 【发布时间】: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);但它给出了同样的问题
【参考方案1】:
您似乎使用了急切加载。所以你必须使用 Include 方法。 为了获得多层次的深度,您必须在 Include 方法之后使用 ThenInclude。
db.Exams.Include(x => x.Questions).ThenInclude(y => y.Answers).FirstOrDefault(x => x.ExamID == id);
官方文档:https://docs.microsoft.com/en-us/ef/core/querying/related-data/
【讨论】:
已经找了一个小时但是找不到 ThenInclude(),我该如何使用那个方法? 它与 Include 属于同一类。 EntityFrameworkCore => EntityFrameworkQueryableExtensions 即使使用 Then Include... 仍然无法解决问题。 在您的模型中。你有 ICollection以上是关于列表中的 ASP.NET MVC C# 列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中为枚举值添加描述以与 ASP.NET MVC 中的下拉列表一起使用? [复制]
将 JSON 数组绑定到 ASP.NET MVC 3 中的列表的故障模型
使用 C# 在 ASP.NET MVC 3 中创建级联下拉列表的最简单方法