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:
沒有留言:
張貼留言
問題沒有大小或好壞