一、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一般用於臨時的緩存內容或拋出錯誤頁面時傳遞錯誤信息。