1. 程式人生 > 其它 >關於控制器與檢視之間引數傳遞

關於控制器與檢視之間引數傳遞

一. Controller 向View傳遞引數

1. ViewData

//底層原始碼中ViewData的定義如下  ControllerBase類中的屬性
public ViewDataDictionary ViewData {get;set;}

ViewData本身是ViewDataDictionary字典型別
public class ViewDataDictionary: IDictionary<string,object>{}

ViewData中存放的是鍵值對資料。ViewData只在一次HTTP請求中有效,當這次請求結束後會自動清空其值。

語法使用如下:

//使用ViewData從控制器傳遞文字資料到檢視
ViewData[
"Message"] = "這裡是我要傳遞的資料";

View 取值

<body>
    <h1> @ViewData["Message"] </h1>
<body>

2. ViewBag

[Dynamic]
public ynamic ViewBag{ get; }

dynamic 型別的變數都會編譯為object型別的變數,dynamic只存在於編譯時刻。

使用語法如下:

ViewBag.Name = "李四";

取值

<body>
    <h1> @ViewBag.Name </h1>
<body>

3. TempData

ViewData屬性與ViewBag屬性無法跨Action()方法傳遞資料,當需要在Action()方法之間傳遞資料時,可採用TempData屬性。

HomeController.cs 程式碼:

TempData["Message"] = "TempData傳遞資料";

/Views/home/index.cshtml 程式碼:

<a href="/home/about"></a>

/Views/home/about.cshtml 程式碼:

<body>
    <h1> @TempData[
"Message"] </h1> <body>

TempData可以跨檢視傳遞
控制器每次從Session中獲取TempData後,就會清楚Session中的TempData資料。每次請求結束後TempData的生命週期同時結束。

二. View向Controller傳遞引數

.cshtml 程式碼
在這裡插入圖片描述

Controller 程式碼
在這裡插入圖片描述