ASP.NET MVC Part 4: ทำความรู้จักกับ ViewData, ViewBag และ TempData
การส่งผ่านข้อมูลระหว่างกันใน ASP.NET MVC จะมีการส่งผ่านกันด้วย objects ซึ่งใน ASP.NET MVC จะมี object ที่ชื่อ ViewData, ViewBag และ TempData เป็น object ที่่ใช้ในการส่งผ่านข้อมูลในลักษณะที่แตกต่างกันออกไป โดยในการส่งผ่านข้อมูลจะแบ่งได้เป็น 3 กรณี คือ การส่งผ่านค่าจาก Controller ไปยัง View การส่งผ่านค่าจาก Controller หนึ่ง ไปยัง Controller อื่น การส่งค่าระหว่าง Action หนึ่ง ไปยัง Action อื่น โดยทั้ง 3 objects จะมีคุณสมบัติที่แตกต่างกัน ดังนี้ ViewBag เป็น dynamic object ในการส่งค่าจาก controller ไปยัง view ViewData เป็น dictionary object ในการส่งค่าจาก controller ไปยัง view TempData เป็น dictionary object ในการส่งค่าข้ามกันระหว่าง controller และ action การส่งผ่านข้อมูลจาก controller ไปยัง View การส่งผ่านข้อมูลจาก Controller ไปยัง View สามารถทำได้ 3 รูปแบบ ขึ้นอยู่กับลักษณะของข้อมูลที่ต้องการส่งว่าเป็นข้อมูลลักษณะไหน มีความซับซ้อนเพียงใด แต่ละรูปแบบสามารถเขียนได้ดังนี้ ส่งผ่าน Model การส่งผ่านข้อมูลผ่านตัว model เป็นการส่งผ่านข้อมูลผ่านตัว model ตรงๆ โดยที่ข้อมูลจะมี property ตามที่มีอยู่ใน model ที่สร้างไว้ ดังตัวอย่าง สร้าง model ของ Book และ set ค่าให้กับ property ต่างๆ และ return model Book ไปยังหน้า View ฝั่ง Controller public ActionResult Index() { List<ฺBook> b = new List<Book>() { new Book{ Id = 1, Title = “Harry Potter”, Author= “JK. Rolling”}, new Book{ Id = 2, Title = “Inferno”, Author= “Dan Brown”} }; return View(b); } ฝั่งแสดงผล View ประกาศ type ของ model เป็น Book หลังจากนั้นใช้ตัวแปร model ในการเข้าถึง property ต่างๆของ Model @model MvcBook.Models.Book <table class=”table”> <tr> <th> @Html.DisplayNameFor(model => model.Title) th> <th> @Html.DisplayNameFor(model => model.Author) th> <th>th> tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) td> <td> @Html.DisplayFor(modelItem => item.Author) td> tr> }