浅谈 MVC中的ViewData、ViewBag和TempData_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 浅谈 MVC中的ViewData、ViewBag和TempData

浅谈 MVC中的ViewData、ViewBag和TempData

 2017/2/14 5:31:15  lovebobo  程序员俱乐部  我要评论(0)
  • 摘要:ViewBag和TempData的区别ViewDataViewBag它是Key/Value字典集合它是dynamic类型对像从Asp.netMVC1就有了ASP.NETMVC3才有基于Asp.net3.5framework基于Asp.net4.0与.netframeworkViewData比ViewBag快ViewBag比ViewData慢在ViewPage中查询数据时需要转换合适的类型在ViewPage中查询数据时不需要类型转换有一些类型转换代码可读性更好在控制器(Controller
  • 标签:MVC ViewData view 浅谈

ViewBag和TempData的区别

ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 framework 基于Asp.net 4.0与.net framework ViewData比ViewBag快 ViewBag比ViewData慢 在ViewPage中查询数据时需要转换合适的类型 在ViewPage中查询数据时不需要类型转换 有一些类型转换代码 可读性更好

 

在控制器(Controller)中使用

ViewData:

       Controller里取数据赋值

var markeType = new MarketDataProvider().GetBTIDData().Where(a=>a.ID!="0"); //在数据库获取数据,这是list数据
      ViewBag.DateType = markeType;//给ViewBag.DateType 赋值  “DateType ”可以随便写名称。

  *  前台调用

class="brush:html;gutter:true;">@foreach (var modelMarket in ViewData["Markettype"] as Dictionary<string, string>)
                       {
                              <div class="row" style="margin-top:10px">

                                    <div class="col-md-4 text-right"><span class="red">*</span> @modelMarket.Value</div>
                                </div>
                        }

  

 

    ViewBag : 

      Controller里取数据赋值

 

string str = "商标,版权,交易,国际注册";

   string[] strs = str.Split(',');

 Dictionary<string, string> dic = new Dictionary<string, string>();

            for(int i=0;i<5;i++)

            {

                dic.Add(i.ToString(),strs[i]);

            }

            ViewData["Markettype"] = dic;

  

      前台调用:

 

@foreach (var modelMarket2 in ViewBag.DateType)

                    {

                        <div class="row" style="margin-top:10px">

                            <div class="col-md-4 text-right"><span class="red">*</span> @modelMarket2.Text</div>

                        </div>

                    }

    按F12运行网站便可以看到运行结果,两个也可以用于不分页的新闻列表。

TempData

TempData也是字典,所以它的使用完全等同于ViewData,但两者之间还是存在很大的差异。

     TempData,顾名思义,就是临时数据。TempData保存在Session中,Controller每次请求的时候都会从Session中获取TempData,然后清除Session。基于这样的事实,在每次请求结束后,TempData的生命周期也就结束了。网上有一句话:TempData至多之只能通过一次Controller传递,假设我们的Controller是跳转到下一个Controller,以此类推,在最后一个Controlle相应的视图上,的确可以获得该TempData。但是,这并不是说TempData已经跨请求传递了,这依然只是一次请求,至于是否是跨Controller传递,我认为不是,所谓的通过Controller传递,是指将TempData传递给View,在上面的例子中,只有最后的Controller才会将该TempData传递给View,所以,TempData的确是只能通过一次Controller传递。

注:有的文字内容搜自博客园。

 

发表评论
用户名: 匿名