我開始了一項新工作,我們必須使用MVC 5創建應用程序,我沒有.NET經驗,所以我不確定我是否正在使用最佳做法。將對象從控制器傳遞到視圖MVC
我有2個模型ClassRom與學生,
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; }
}
我傳遞一個ICollection的<>從控制器使用ViewBag
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)。 [這裏是一個很好的閱讀](http://stackoverflow.com/questions/11262034/mvc-viewbag-best-practice)給你一些更多的想法 – Shyju