C# 如何将用户添加到模型以在网页上显示
我正在制作一个应用程序,用户可以在其中进行测验。以下是测验课的示例模型:C# 如何将用户添加到模型以在网页上显示,c#,asp.net-mvc-4,razor,entity-framework-5,C#,Asp.net Mvc 4,Razor,Entity Framework 5,我正在制作一个应用程序,用户可以在其中进行测验。以下是测验课的示例模型: [Table("Quizzes")] public class Quiz { public int Id { get; set; } public string Name { get; set; } public User CreatedBy { get; set; } } 到目前为止,“用户”类只定义了一个Id和用户名: [Table("Users")] public class User {
[Table("Quizzes")]
public class Quiz
{
public int Id { get; set; }
public string Name { get; set; }
public User CreatedBy { get; set; }
}
到目前为止,“用户”类只定义了一个Id和用户名:
[Table("Users")]
public class User
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
在我的视图中,我想显示测验及其创建用户的列表。以下是视图中实现此功能的部分:
@foreach(var item in Model)
{
<div>@item.Name</div>
<div>@item.CreatedBy.UserName</div>
<hr />
}
这就是你的问题所在。当您返回由ToList()
触发的quick
zes列表时,User
对象不会随它一起返回。您应该急于加载用户
对象。你应该这样做:
var model = _db.Quizzes.Include(x => x.CreatedBy).ToList();
如果上面的方法不起作用(我忘了你是否需要一个使用该方法的扩展方法),你可以试试这个,它会给你同样的结果
var model = _db.Quizzes.Include("CreatedBy").ToList();
您能粘贴查看页面代码吗?请指出遇到错误的位置…即。哪一行代码。在控制器方法中发布代码,您可能不会返回每个
测验对象的CreatedBy
。是的,david是对的。我无法调试它。啊,这很有趣,我认为评论来自海报,抱歉@VondRitzI在尝试构建时收到此错误:无法将lambda表达式转换为类型“string”,因为它不是委托类型。您的控制器文件中是否有使用System.Linq的。我正在做一些调查,看看问题可能是什么,至少是关于那个错误。好的,请看我更新的答案。我想我给你的答案的第一个版本是我使用存储库的一个项目中的剩余内存,我有扩展方法,所以我可以使用lambda表达式。如果可以的话,我会投你一票。你的第二个解决方案成功了。非常感谢。
var model = _db.Quizzes.ToList();
var model = _db.Quizzes.Include(x => x.CreatedBy).ToList();
var model = _db.Quizzes.Include("CreatedBy").ToList();