ASP.NET MVC 重點教程一週年版 第四回 向View傳值
阿新 • • 發佈:2018-12-27
一、ViewData與TempData屬性來向View頁傳遞物件
上文中已經提到,使用ViewData可以將資料由Controller傳遞到View
在前文中我們建立了EiceController類
在本文的示例中我們將這個Controller改一下
public class EiceController : Controller { public ActionResult Index() { ViewData["ViewData"] = "在這裡顯示ViewData"; TempData["TempData"] = "在這裡顯示TempData"; return View(); } public ActionResult Index2() { return View("Index"); //這裡指定了規定顯示的View檔案即Eice目錄下的Index.aspx } }
我們將Index的引數移除,並提供了ViewData和TempData的賦值
在Views/Eice/Index.aspx這個View中我們寫以下程式碼
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %><asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Index </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 1:<%=ViewData["ViewData"]%><br /> 2:<%=TempData["TempData"]%> </asp:Content>
注意上面的1.2不是行號,是我寫的。
接下來我們執行工程
訪問http://localhost/Eice/Index
可以看到執行得到以下
1.在這裡顯示ViewData 2.在這裡顯示TempData
再訪問http://localhost/Eice/Index2
顯示結果為
1. 2.在這裡顯示TempData
這裡1顯示是的ViewData中的內容,2為TempData傳遞的內容
我們可以看到ViewData只能在當前Action中有效
但是TempData可以類似於Session一樣到其它頁面仍然存在,但只限一頁的訪問(類似於Monorail中的Flash)
TempData一般用於臨時的快取內容或丟擲錯誤頁面時傳遞錯誤資訊。
二、通過ViewData.Model來傳遞物件
我們先建立一個Model:EiceIndexModel.cs。
public class EiceIndexModel { /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 性別 /// </summary> public bool Sex { get; set; } }
之後我們建立一個新的Action:Index3
public ActionResult Index3(){ var m = new EiceIndexModel { Name = "鄒健", Sex = true }; return View(m); }
我們下面為Index3建立View檔案,仍然是在Index3上點選右鍵AddView
於是自動生成了一個View檔案,我們執行看結果:
如果我們想要顯示其它的檔案我們應該怎麼辦呢?