zoukankan      html  css  js  c++  java
  • 译:什么是ViewData的, ViewBag和TempData?

    译文出处:http://www.codeproject.com/Articles/476967/WhatplusisplusViewData-cplusViewBagplusandplusTem

    ASP.NET MVC提供3种选择ViewData,ViewBag,TempData来从controller到View及后续请求传输数据。

    ViewData和ViewBag很相似,而TempData有所不同。

    让我们来讨论或总结三者的要点:

    ViewBag 和 ViewData的区别:

    1. ViewData 是一个字典对象,从ViewDataDictionary 类继承,已string(字符串)作为键来访问对象。
    2. ViewBag 是一个动态属性,是c#4.0新增的优秀的动态特性。
    3. ViewData 需要进行数据类型转换,判断书否为null值来防止出错。

          4.ViewBag 不需要类型转换。

    ViewBag & ViewData 的例子:

    public ActionResult Index()
    {
        ViewBag.Name = "Monjurul Habib";
        return View();
    }
    public ActionResult Index()
    {
        ViewData["Name"] = "Monjurul Habib";
        return View();
    }

    在视图中:

    @ViewBag.Name 
    @ViewData["Name"]

    TempData:

    TempData也是一个字典类型,从TempDataDictionary类继承而来。存储在短暂的会话中。键 为string类型,值为object类型。

    所不同的是对象的生命周期。TempData色生命周期是一个http请求的时间。意思就是从一个页面跳转到另一个页面的时间。保持302/303的重新定向因为他们是在同一个请求中。

    当你从一个control到另一个control或一个page到另一个page之间跳转的时候帮你保存数据。它内部使用了会话(session)机制。主要用在从一个页面跳到另外一个页面期间来存储数据。

    需要进行数据类型转换,检查是否为null来规避错误。通常用于存储一个时间信息,错误信息或验证信息。

    public ActionResult Index()
    {
      var model = new Review()
                {
                    Body = "Start",
                    Rating=5
                };
        TempData["ModelName"] = model;
        return RedirectToAction("About");
    }
    <pre><pre lang="cs">public ActionResult About()
    {
        var model= TempData["ModelName"];
        return View(model);
    }

    最后一个机制就是Session,工作方式就像viewdata,字典类型等键值方式,键一般为string类型,值可以是object类型。这种方式,是把数据存储在客户端的cookie里,可以保存较长的一段时间。也需要进行行验证,但是没有安全保障。关于ViewData 和viewbag你需要在程序中较灵活的应运。因为每一个页面的动作都贯穿asp.net 整个生命周期。你可以在子页面中使用viewdata/viewbag,但是要细心,你是不是用它来填充无关的数据,会污染你的控制器。

  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/yplong/p/4268006.html
Copyright © 2011-2022 走看看