1. 程式人生 > >Asp.net Mvc Framework 五 (向View傳值以及Redirect)

Asp.net Mvc Framework 五 (向View傳值以及Redirect)

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>

publicclass EiceController : Controller
    
{
        
publicvoid Index() {
            ViewData[
"ViewData"="在這裡顯示ViewData";
            TempData[
"TempData"="在這裡顯示TempData";
            RenderView(
"Index");
        }

        
publicvoid 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來完成頁面的跳轉

Asp.net Mvc Framework 系列