Mvc中ViewBag、ViewData、TempData如何使用

对于我初学者来说,Mvc有很多都是我所迷惑的,也是我了解后所痴迷的。废话不多说,来谈谈我今天对Mvc这几个常用的对象的理解吧,这里面只简明概要叙述

ViewBag   获取动态视图数据字典      作用:给视图传递数据,不需要转换类型,由系统动态解析,比ViewData执行性能要差

ViewData    获取或设置视图数据的字典            给视图传递数据,需要转换成相应的类型,编写没有ViewBag方便,可读性强

TempData     临时数据的字典             给控制器或视图传递数据,需要和ViewData一样进行类型转换,可以在多个控制器或页面传值,但是只能读取一次就为null了

后台代码

   //
        // GET: /CommonStudy/

        public ActionResult Index()
        {
            var model = Sxy.BLL.CradInfo.GetList("", "");

            this.ViewBag.SecondModelList = model.ToList();
            //自定义数据
            this.ViewData["ThirdModel"] = model.FirstOrDefault();
            //缓存,在下一个控制器可以取到当前的数据,但是只能去一次就释放了
            this.TempData["IndexCache"] = model.ToList();

            //只能被取一次,不管是视图使用还是控制器使用,只要其中一个使用了,当前临时缓存就为null了
            this.TempData["Temp"] = "设置一个缓存";

            return View(model);
        }

        //
        // GET: /CommonStudy/Create

        public ActionResult Create()
        {
            //获取IndexCache
            var tempData = this.TempData["IndexCache"];
            //转换成实例象
            var model = tempData as List<Sxy.Model.CradInfo>;
            var tempData2 = this.TempData["IndexCache"];
            //在当前控制存储,给后面一个控制器使用
            this.TempData["CreateCache"] = tempData2;

            //由于前面视图有使用到了这个临时缓存,现在已取不到了
            var temp = this.TempData["Temp"];

            return View();
        }

  //
        // POST: /CommonStudy/Create

        [HttpPost]
        public ActionResult Create(Sxy.Model.CradInfo model)
        {
            try
            {
                // TODO: Add insert logic here
                var tempData2 = this.TempData["IndexCache"];
                var createCache = this.TempData["CreateCache"];
                if (ModelState.IsValid)
                {
                    if (Sxy.BLL.CradInfo.Add(model) > 0)
                    {

                    }
                }

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

前台代码

@model IEnumerable<Sxy.Model.CradInfo>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
    @*临时数据*@
    @this.TempData["Temp"]

</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.userId)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.carNumber)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.carQueryPassword)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.createTime)
        </th>
        <th></th>
    </tr>
    @*默认返回的Model*@
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.userId)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.carNumber)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.carQueryPassword)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.createTime)
            </td>
            <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.id }) |
            @Html.ActionLink("Details", "Details", new { id = item.id }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.id })
            </td>
        </tr>
    }

    <tr>
        <td colspan="5">
            <hr />
        </td>

    </tr>
    @*自定义ViewData*@
    @foreach (var item in ViewData["SecondModelList"] as List<Sxy.Model.CradInfo>)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.userId)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.carNumber)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.carQueryPassword)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.createTime)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.id }) |
            @Html.ActionLink("Details", "Details", new { id = item.id }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.id })
            </td>
        </tr>
    }

    <tr>
        <td style="width: auto">
            <hr />
        </td>

    </tr>

    @{ var ThirdModel = ViewData["ThirdModel"] as Sxy.Model.CradInfo;
        <tr>

            <td>
                @Html.DisplayFor(modelItem => ThirdModel.userId)
            </td>
            <td>
                @Html.DisplayFor(modelItem => ThirdModel.carNumber)
            </td>
            <td>
                @Html.DisplayFor(modelItem => ThirdModel.carQueryPassword)
            </td>
            <td>
                @Html.DisplayFor(modelItem => ThirdModel.createTime)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = ThirdModel.id }) |
            @Html.ActionLink("Details", "Details", new { id = ThirdModel.id }) |
            @Html.ActionLink("Delete", "Delete", new { id = ThirdModel.id })
            </td>
        </tr>

    }

</table>

Mvc中ViewBag、ViewData、TempData如何使用

时间: 2024-08-08 09:42:14

Mvc中ViewBag、ViewData、TempData如何使用的相关文章

MVC中的ViewData、ViewBag和TempData

一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; } 二.ViewBag和ViewData的区别 viewdata viewbag 它是key/value字典集合 它是dynamic类型对象 从asp.net mvc1就有了 从asp.netmvc3才有 基于asp.netframework 3.5 基于asp.net framework4.0

浅谈 MVC中的ViewData、ViewBag和TempData

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中查询数据时不需要类型转换 有一些类型转换代码 可

Asp.net MVC中的ViewData与ViewBag

在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: 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中查询数据时需要转换合适的类型 在V

Asp.net MVC中的ViewData与ViewBag(转)

在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: 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中查询数据时需要转换合适的类型 在V

.NET Mvc中ViewBag、ViewData、TempData如何使用

ViewBag 获取动态视图数据字典 作用:给视图传递数据,不需要转换类型,由系统动态解析,比ViewData执行性能要差 ViewData   获取或设置视图数据的字典         给视图传递数据,需要转换成相应的类型,编写没有ViewBag方便,可读性强 TempData     临时数据的字典   给控制器或视图传递数据,需要和ViewData一样进行类型转换,可以在多个控制器或页面传值,但是只能读取一次就为null了 后台代码 1 // 2 // GET: /CommonStudy/

ASP.NET MVC中ViewBag和ViewData的区别

在MVC3.0以上我们会用到ViewBag或者ViewData进行页面传值,对比一下二者的差距: ViewData ViewBag 基于key/value的字典集合 dynamic类型对象 从ASP.NET1.0就有 从ASP.NET3.0才有 基于ASP.NET 3.5 framework 基于ASP.NET 4.0于.net framework ViewData比ViewBag快 ViewBag比ViewData慢 在页面展示数据时,需要转换成合适的实体类型 在页面展示数据时,不需要类型转换

Mvc 中ViewBag Model 查找不到解决

按照晚上修改VIew视图中web.config 很显然,没效果... 我的情况是 出现: 我想了下  看下是不是编译器的问题: 我在vs2013中建立 MVC4  然后用 vs2015打开 然后报错-> 想了下  要不要升级 .net 4.5 然后升级成为MVC5

ASP.NET MVC4中ViewBag、ViewData和TempData的使用和区别

一.说明 本文章主要是讲解asp.net mvc中ViewBag.ViewData和TempData的使用和区别,ViewBag.ViewData和TempData常常用于将action方法中的数据传递到view界面. 从MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData.MVC3中保留了ViewData的使用.ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary). 二.区别 ViewBag 不再是字典的键

ASP.NET MVC程序传值方式:ViewData,ViewBag,TempData和Session

转载原地址 http://www.cnblogs.com/sunshineground/p/4350216.html 在ASP.NET MVC中,页面间Controller与View之间主要有以下几种小量数据的传值方式:ViewData.ViewBag.TempData和Session变量. 下面就这四种传值方式做出详细介绍. 一.ViewData ViewData是一个继承自ViewDataDictionary类的Dictionary对象,它只能存储String Key/Object Valu