MVC如何在Controller與View之間傳遞參數? ViewBag | ViewData | TempData 的專屬特性與細節 - Slash Engineer 要多斜有多斜

Breaking

Slash Engineer 要多斜有多斜

程式設計的學習過程 (環境設置、開發環境、程式設計、語法練習、資料結構等等...) 99'暑假:六月初開始. 社會新鮮人:十一月初開始.

2022年11月4日 星期五

MVC如何在Controller與View之間傳遞參數? ViewBag | ViewData | TempData 的專屬特性與細節

MVC中Controller與View可透過下列三個方式,將少量參數在其之間傳遞


1. ViewBag : 動態型別

    宣告方式 : ViewBag.屬性 = "屬性值"

    宣告範例 : ViewBag.PId = "123"

2. ViewData : 字典型別

    宣告方式 : ViewData["鍵"] = "值"

    宣告範例 : ViewData["PId"] = "123

3. TempData字典型別

   (by session,若session結束,參數也結束;且只能request一次,使用後便清除。)

    宣告方式 : TempData["鍵"] = "值"

    宣告範例 : TempData["PId"] = "123"


瞭解使用方式後,遇到了一個現象,ViewData鍵 ViewBag屬性,若使用了相同的名稱,則所得到的"值"與"屬性值"也會相同。

而最後的值取決於哪一個最後宣告。



以下來看看實際例子


前端form透過post傳入參數至HomeController的Create(string, string, int)

後端Controller收到後,依序丟入ViewData["xxx"]內,再傳頁面回前端

從參數監看式中,可以發現ViewData宣告的參數,也與ViewBag同步

因此在使用ViewData、ViewBag時要注意 "鍵" 與 "屬性"的名稱。

相同的鍵/屬性名稱宣告後,可同時在ViewData, ViewBag做使用。


Ref:

跟著實務學習ASP.NET MVC 5.x:第一次寫MVC就上手


沒有留言:

張貼留言

問題沒有大小或好壞