mvc中的几个数据传递

1、ViewData对象

    ViewBagData是一种字典集合数据同时属于视图基类和控制器基类的属性。

    实例:

    //控制器

public class HomeController:Controller
{
        public ActionResult Index()
        {
             ViewData["data"]="Hello asp.net";
             return View();
        }
}       

    视图:

<h1><%=ViewData["data"]%></h1>

2、动态对象ViewBag

 ViewBag是dynamic类型的对象,同事属于视图基类和控制器基类的属性。用法如下:

   //控制器代码

public class HomeController:Controller
{
        public ActionResult Index()
        {
             ViewBag.data="Hello asp.net";
             return View();
        }
}            

  <!--视图-->

<h1><%=ViewBag.data%></h1>

本质上,ViewBag是对ViewData数据的包装,,也就是使用ViewData保存数据,可以使用ViewBag读取,使用ViewBag保存的数据,也可以使用ViewData读取,例如

ViewData["data"]的数据,使用ViewBag.data也可以访问。

注意:同一个项目中,一般ViewData和ViewBag只是用一种,不要代码中同同时出现ViewData和ViewBag.

3、跨请求数据传递——TempData   

    TempData也属于字典类型在编码上于ViewData类似,但是他是完全独立的对对象,它保存的数据域Viewdata互不干扰

  用法如下:

     //控制器

public class HomeController:Controller
{
        public ActionResult Index()
        {
             TempData["data"]="Hello asp.net";
             return View();
        }
}        

   //视图

<h1><%=TempData["data"]%></h1>

   在开发中TempData主要是跨请求传递数据

 

public class HomeController:Controller
{
        public ActionResult Index()
        {
             TempData["data"]="来自Index()的数据";
             Response.Redirect("~/Home/Detail");
             return View();
        }
        public ActionResult  Detail()
       {
             return View();
       }
}     

     //Detail.aspx视图

<h1><%=TempData["data"]%></h1>

    在asp.net mvc系统中,TempData的保存机制实际上是可扩展的,它默认的保存机制是session。虽然TempData的保存机制是session,对于前一次的请求使用Temp

    使用的Temp保存的数据,但是如何Temp中的数据被使用过(从视图中输出)接下来的请求将获取不到数据,再一次请求中,如何TempData数据被使用过,就会被清除

    如果没有被使用过,那么他保存的时间是Session的生存期。

 

 

 

 

 

 

 

 

 

posted @ 2014-06-15 15:37  夜了盖咋啦  阅读(290)  评论(0编辑  收藏  举报