Asp.net Mvc Framework 五 (向View傳值以及Redirect)
阿新 • • 發佈:2018-12-27
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 系列
上文中已經提到,使用ViewData可以將資料由Controller傳遞到View
在前文中我們建立了EiceController類
在本文的示例中我們將這個Controller改一下
namespace MvcApplication2.Controllers
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
/// 記不記得前面講過的,所有Controller都要繼承於
/// Controller類當然Controller有很多種,我們慢慢講
///</summary>
publicclass EiceController : Controller
{
publicvoid Index() {
ViewData["ViewData"] ="在這裡顯示ViewData";
TempData["TempData"] ="在這裡顯示TempData";
}
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
可以看到執行得到以下
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 系列