[Asp.Net Core Mvc] Part.7 Controller/Action傳遞資料給View的四種方式(二) Model、TempData
Jun 19, 2021
這篇就接續上一篇未說完的部份Model、TempData,那我們就直接看下去吧!
四種方式:
一、ViewBag:使用dynamic動態型別,強型別
二、ViewData:使用Dictionary字典,弱型別
三、Model:陣列、集合、POCO等資料模型,強型別
四、TempData:使用Dictionary字典,弱型別,儲存於Cookie(傳換頁面還是可以取得到資料)
三、Model
1、進行Controller / Action來設定Model的值
List<string> Cars = new List<string>();Cars.Add("Volkswagen");Cars.Add("Honda");Cars.Add("TOYOTA");return View(Cars);
2、View進行取得資料
<b>Model</b><ul>@foreach (var item in Model){<li>@item</li>}</ul><br />
3、結果畫面:
四、TempData (Cookie)
1、首先建立一個新的控制器(MessageController),這次我們會展示如何傳送資料到不同的控制器來互相使用同一份資料。
2、進行CarController / Action來設定TempData的值
public IActionResult Index(){TempData["PassMessage"] = "這個是TempData";TempData["User"] = "Charlie";return RedirectToAction("Index", "Message");}
3、進行 MessageController / Action來檢查傳送過來的TempData值
//檢查TempData是否有值if (!TempData.ContainsKey("PassMessage")){return new EmptyResult();}TempData.Keep(); //保留資料,不被清除return View();
4、View進行取得資料
<H3>TempData</H3><ul><li>@TempData["PassMessage"]</li></ul>
5、結果畫面:
以上就是Model、TempData兩者傳送資料的方式,原則上Model的值可以使用陣列、集合…等資料模型,所以很有彈性;另外TempData可以做到轉換頁面也能保留值在cookie,某些時間點也是很方便,端看開發人員怎麼使用,傳遞資料的四種方式都簡介完了,之後也許有機會再介紹到更進階的用法,謝謝!