私は新しい仕事を始めました.MVC 5を使用してアプリケーションを作成する必要があります。.NETでの経験がないので、ベストプラクティスを使用しているかわかりません。コントローラからビューMVCにオブジェクトを渡す
私はViewBag
IList<ClassRom> classes = db.Classes.ToList();
IList<Student> students = db.Students.ToList();
ViewBag.classes = classes;
ViewBag.students = students;
return View();
とビュー
内のデータを使用してを使用してビューにコントローラから> ICollectionを<を渡しています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; }
}
を持っています
<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>
}
私を質問は、間違っているのですか?私はViewBagの代わりに@model IEnumerableを使うべきですか?
ViewBagを使用してデータを転送する人もいれば、強く型付けされたユーザーもいます(2番目の方法)。私は個人的にViewData/ViewBagを避け、強く型付けされたアプローチを使用することを好みます。 1つの違いは、ORMツールから作成したエンティティクラスを使用しないことです(ビューがそのクラスに密接に結合される)。代わりにビュー固有のビューモデル(POCO)を使用します。あなたにいくつかのアイデアを与えるために、[ここでは良い読んだ](http://stackoverflow.com/questions/11262034/mvc-viewbag-best-practice) – Shyju