国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

控制器向視圖傳遞數據的3種方式

2024-04-27 15:05:45
字體:
來源:轉載
供稿:網友

僅供自己學習用:

asp.net MVC中,控制器和視圖之間的數據傳遞包括兩個方向:

將控制器設置的數據傳遞到視圖中,在視圖中顯示數據;將視圖中的數據傳遞到控制器 中,在控制器中讀取、處理數據。今天先給大家講講控制器向視圖傳遞數據:控制器向視圖傳遞數據ASP.NET框架中可以通過3種方式將數據從控制器傳遞到視圖。1. 使用 ViewData 傳遞數據在ASP.NET MVC框架中,所有的控制器必須繼承Controller類,該類是ControllerBase的之類。根據ControllerBase類中的ViewData屬性,可以在控制器的相關動作方法中設置視圖數據字典的值(ViewDataDictionary)。例如,在"Home" 控制器的Index()動作方法中,設置ViewData視圖數據字典。namespace Mvcapplication1:Controllers{     public class HomeController:Controller    {        public ActionResult  Index()        {            ViewData["Name"]="代碼里";            ViewData["Ads"]="www.daimali.com";            ViewData["person"]=new Person{name="李四",sex="男"};            return View();        }    }}示例中ViewData字典中保存了2個字符串和一個Person對象。在ViewData中保存數據時都會轉換為Object,因此視圖中顯示ViewData數據時,一般需要進行數據的類型轉換。<html><head></head><body>    站點名稱:@(ViewData["Name"])    網站地址:@(ViewData["Ads"])    @{        Person person=ViewData["person"] as Person;    }        所屬人:@(person.name)     性別:  @(person.sex)</body></html>2. 使用TempData傳遞數據    根據ControllerBase類中的TempData屬性,同樣可以在控制器的相關動作方法中設置該TempData屬性的值。例如,在"Home" 控制器的Index()動作方法中,設置TempData視圖數據字典。namespace MvcApplication1:Controllers{     public class HomeController:Controller    {        public ActionResult  Index()        {            TempData["Name"]="代碼里";            TempData["Ads"]="www.daimali.com";            TempData["person"]=new Person{name="李四",sex="男"};            return View();        }    }}視圖中讀取數據:<html><head></head><body>    站點名稱:@(TempData["Name"])    網站地址:@(TempData["Ads"])    @{        Person person=TempData["person"] as Person;    }        所屬人:@(person.name)     性別:  @(person.sex)</body></html>通過上述ViewData和TempData的舉例,大家可以看到,用法上完全一樣,只是字面上看起來不一樣而已,但是他們又是完全不同的兩種數據類型。我們來比較一下ViewData和TempData的區別:ViewData的數據類型是ViewDataDictionary類的實例化對象,而TempData的數據類型則是TempDataDictionary類的實例化對象;ViewData 只在當前頁面訪問,無法跨頁傳遞;TempData則保存在session中,可以實現跨頁傳遞,且傳遞一次之后自動刪除。不同點:  1. 類型不同  2. 訪問范圍不同,ViewData當前頁,TempData跨頁  3. 使用次數不同,TempData只能訪問一次  4. 存儲位置不同,TempData存儲在Session中。3. 使用Model傳遞數據  通過在控制器的View()方法中傳遞實例化對象,可以將該對象傳遞到視圖中。HomeController控制器代碼:namespace MvcApplication1:Controllers{     public class HomeController:Controller    {        public ActionResult  Index()        {            Person person=new Person{name="李四",sex="男"};            return View(person);//傳遞對象        }    }}視圖中使用:@model Person<html><head></head><body>    站點名稱:@(TempData["Name"])    網站地址:@(TempData["Ads"])    @{        Person person=TempData["person"] as Person;    }        所屬人:@(Model.name)     性別:  @(Model.sex)</body></html>如上,傳遞實例化對象時,控制器將ViewDataDictionary類的實例化對象的Model屬性設置為需要被傳遞的對象;在視圖 中只要讀取Model屬性,就可以獲得控制器中的實例化對象。總結:從控制器向視圖傳遞數據可以使用ViewData,TempTata和Model 3種方式。下次將會給大家分享視圖向控制器提交數據的幾種方式。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝鸡市| 赤城县| 油尖旺区| 西华县| 白城市| 广东省| 天门市| 凉山| 隆昌县| 嘉荫县| 石泉县| 徐水县| 汤阴县| 喜德县| 丽江市| 香格里拉县| 叶城县| 泗阳县| 读书| 静乐县| 天柱县| 北碚区| 馆陶县| 恩施市| 康马县| 阳城县| 西峡县| 盐山县| 鸡东县| 华坪县| 荥经县| 巴东县| 孝昌县| 甘德县| 瑞昌市| 怀宁县| 肃北| 永登县| 密山市| 灵山县| 晋江市|