【发布时间】:2016-07-25 16:46:40
【问题描述】:
我开始了一份新工作,我们必须使用 MVC 5 创建一个应用程序,我没有 .NET 经验,所以我不确定我是否使用了最佳实践。
我有 2 个模型 ClassRom 和 Student,
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class ClassRom
{
public int ID { get; set; }
public string Name { get; set; }
}
我正在使用 ViewBag 将 ICollection 从控制器传递到视图
IList<ClassRom> classes = db.Classes.ToList();
IList<Student> students = db.Students.ToList();
ViewBag.classes = classes;
ViewBag.students = students;
return View();
并在视图中使用数据
<div>
@foreach (var student in ViewBag.students)
{
<div>@student.Name</div>
<div>@student.Age</div>
}
它可以很好地满足我的需要,无论如何,如果我添加一个脚手架控制器,它将创建如下内容:
public ActionResult Index()
{
return View(db.Students.ToList());
}
还有风景
@model IEnumerable<School.Models.Student>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Age)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
我的问题是,我做错了吗?我应该使用@model IEnumerable 而不是 ViewBag 吗?
【问题讨论】:
-
有些人使用 ViewBag 传输数据,有些用户使用强类型方法(您的第二种方法)。我个人更喜欢避免 ViewData/ViewBag 并尝试使用强类型方法。一个区别是,我不使用从我的 ORM 工具创建的实体类(这将使我的视图与该类紧密耦合),而是使用视图特定的视图模型(简单的 POCO)。 Here is a good read给你更多的想法
标签: .net asp.net-mvc entity-framework viewbag