国产探花免费观看_亚洲丰满少妇自慰呻吟_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種方式。下次將會給大家分享視圖向控制器提交數據的幾種方式。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德兴市| 河津市| 武威市| 双柏县| 东光县| 武胜县| 秀山| 若羌县| 阳新县| 龙里县| 花莲市| 辽阳市| 宁蒗| 宜章县| 咸宁市| 通山县| 青龙| 云霄县| 铜川市| 麻城市| 板桥市| 镇平县| 南投市| 巴里| 萍乡市| 西盟| 南部县| 绵阳市| 轮台县| 麻江县| 玛纳斯县| 明星| 陕西省| 高清| 浏阳市| 辽宁省| 临清市| 合江县| 永福县| 龙门县| 万源市|