我正在尝试按照一些有关如何执行此操作的教程,但我没有结果。
我必须在我的视图中使用两个模型,并且它们都从数据库中检索数据,但是当我尝试将它们组合到一个视图中时,它表示我得到了一个空结果。如何从数据库中查询并将两个模型返回到视图?
public class User
{
[Key]
public int UserID { get; set; }
public string UserName { get; set; }
public string UserPassword { get; set; }
}
public class Course
{
[Key]
public int CourseID { get; set; }
public string CourseName { get; set; }
public string CourseDescription { get; set; }
}
public class CommonViewModel
{
public List<User> users { get; set; }
public List<Course> courses { get; set; }
}
public class DefaultConnection : DbContext
{
public DefaultConnection() : base("DefaultConnection") { }
public DbSet<User> Users { get; set; }
public DbSet<Course> Vehicles { get; set; }
}
@model TEST.Models.CommonViewModel
@foreach (var item in Model.users)
{
@Html.DisplayFor(modelItem => item.UserID)
}
private DefaultConnection db = new DefaultConnection();
public ActionResult Index()
{
List<User> users = new List<User>();
List<Course> courses = new List<Course>();
var viewModel = new CommonViewModel();
viewModel.users = users;
viewModel.courses = courses;
return View(viewModel);
}
答案 0 :(得分:1)
我认为您尚未正确初始化CommonViewModel
。以下代码片段可以帮助您。
public class HomeController
{
private DefaultConnection db = new DefaultConnection();
public ActionResult Index()
{
var viewModel = new CommonViewModel();
viewModel.users = db.User.ToList();
viewModel.courses = db.Course.ToList();
return View(viewModel);
}
}
请参阅this dotnetfiddle。希望这会对你有所帮助。
答案 1 :(得分:0)
您的模型应包含用户的定义;它包含名为user的属性。
public class CommonViewModel
{
public List<User> Users {get ; set; }
public List<Course> courses {get ; set; }
}
或者,您应该从Action返回List。在这种情况下,你应该改变为
@model List<TEST.Models.CommonViewModel>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.User.UserID)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.UserPassword)
</td>
</tr>
}