您的位置:首页 > 编程语言 > ASP

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

2008-03-12 09:51 465 查看
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来完成页面的跳转

Asp.net Mvc Framework 系列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: