ViewData與TempData屬性來向View頁傳遞對象
上文中已經提到,使用ViewData可以將數據由Controller傳遞到View
在前文中我們建立了EiceController類
在本文的示例中我們將這個Controller改一下
namespace MvcApplication2.Controllers
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
/**//// <summary>
/// 記不記得前面講過的,所有Controller都要繼承於
/// Controller類當然Controller有很多種,我們慢慢講
/// </summary>
public class EiceController : Controller
{
public void Index() {
ViewData["ViewData"] = "在這裡顯示ViewData";
TempData["TempData"] = "在這裡顯示TempData";
RenderView("Index");
}
public void Index2() {
RenderView("Index");
}
}
}
我們將Index的參數移除,並提供了ViewData和TempData的賦值
在Views/Eice/Index.aspx這個View中我們寫以下代碼
1:<%=ViewData["ViewData"]%><br />
2:<%=TempData["TempData"]%>注意上面的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一般用於臨時的緩存內容或拋出錯誤頁面時傳遞錯誤信息
Redirect方法跳轉頁面到其它的Controller/Action
RedirectToAction(Action名);
RedirectToAction(Action名, Controller名);
RedirectToAction(RouteValueDictionary);在這裡前兩種都沒有什麼好說的RedirectToAction("About","Home");就是一種寫法
主要是第三種重載
用戶可以這樣寫
System.Web.Routing.RouteData routeData = new System.Web.Routing.RouteData();
routeData.Values.Add("Action", "About");
routeData.Values.Add("Controller", "Home");
RedirectToAction(routeData.Values);
這樣就可以完成頁面跳轉
當然,也可以使用傳統的Response.Redirect來完成頁面的跳轉