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

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

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

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

后台代码

 1 //
 2         // GET: /CommonStudy/
 3
 4         public ActionResult Index()
 5         {
 6             var model = Sxy.BLL.CradInfo.GetList("", "");
 7
 8             this.ViewBag.SecondModelList = model.ToList();
 9             //自定义数据
10             this.ViewData["ThirdModel"] = model.FirstOrDefault();
11             //缓存,在下一个控制器可以取到当前的数据,但是只能去一次就释放了
12             this.TempData["IndexCache"] = model.ToList();
13
14             //只能被取一次,不管是视图使用还是控制器使用,只要其中一个使用了,当前临时缓存就为null了
15             this.TempData["Temp"] = "设置一个缓存";
16
17             return View(model);
18         }
19
20
21         //
22         // GET: /CommonStudy/Create
23
24         public ActionResult Create()
25         {
26             //获取IndexCache
27             var tempData = this.TempData["IndexCache"];
28             //转换成实例象
29             var model = tempData as List<Sxy.Model.CradInfo>;
30             var tempData2 = this.TempData["IndexCache"];
31             //在当前控制存储,给后面一个控制器使用
32             this.TempData["CreateCache"] = tempData2;
33
34             //由于前面视图有使用到了这个临时缓存,现在已取不到了
35             var temp = this.TempData["Temp"];
36
37             return View();
38         }
39
40   //
41         // POST: /CommonStudy/Create
42
43         [HttpPost]
44         public ActionResult Create(Sxy.Model.CradInfo model)
45         {
46             try
47             {
48                 // TODO: Add insert logic here
49                 var tempData2 = this.TempData["IndexCache"];
50                 var createCache = this.TempData["CreateCache"];
51                 if (ModelState.IsValid)
52                 {
53                     if (Sxy.BLL.CradInfo.Add(model) > 0)
54                     {
55
56                     }
57                 }
58
59
60                 return RedirectToAction("Index");
61             }
62             catch
63             {
64                 return View();
65             }
66         }

前台代码

  1 @model IEnumerable<Sxy.Model.CradInfo>
  2
  3 @{
  4     ViewBag.Title = "Index";
  5 }
  6
  7 <h2>Index</h2>
  8
  9 <p>
 10     @Html.ActionLink("Create New", "Create")
 11     @*临时数据*@
 12     @this.TempData["Temp"]
 13
 14 </p>
 15 <table>
 16     <tr>
 17         <th>
 18             @Html.DisplayNameFor(model => model.userId)
 19         </th>
 20         <th>
 21             @Html.DisplayNameFor(model => model.carNumber)
 22         </th>
 23         <th>
 24             @Html.DisplayNameFor(model => model.carQueryPassword)
 25         </th>
 26         <th>
 27             @Html.DisplayNameFor(model => model.createTime)
 28         </th>
 29         <th></th>
 30     </tr>
 31     @*默认返回的Model*@
 32     @foreach (var item in Model)
 33     {
 34         <tr>
 35             <td>
 36                 @Html.DisplayFor(modelItem => item.userId)
 37             </td>
 38             <td>
 39                 @Html.DisplayFor(modelItem => item.carNumber)
 40             </td>
 41             <td>
 42                 @Html.DisplayFor(modelItem => item.carQueryPassword)
 43             </td>
 44             <td>
 45                 @Html.DisplayFor(modelItem => item.createTime)
 46             </td>
 47             <td>
 48             @Html.ActionLink("Edit", "Edit", new { id = item.id }) |
 49             @Html.ActionLink("Details", "Details", new { id = item.id }) |
 50             @Html.ActionLink("Delete", "Delete", new { id = item.id })
 51             </td>
 52         </tr>
 53     }
 54
 55     <tr>
 56         <td colspan="5">
 57             <hr />
 58         </td>
 59
 60     </tr>
 61     @*自定义ViewData*@
 62     @foreach (var item in ViewData["SecondModelList"] as List<Sxy.Model.CradInfo>)
 63     {
 64         <tr>
 65             <td>
 66                 @Html.DisplayFor(modelItem => item.userId)
 67             </td>
 68             <td>
 69                 @Html.DisplayFor(modelItem => item.carNumber)
 70             </td>
 71             <td>
 72                 @Html.DisplayFor(modelItem => item.carQueryPassword)
 73             </td>
 74             <td>
 75                 @Html.DisplayFor(modelItem => item.createTime)
 76             </td>
 77             <td>
 78                 @Html.ActionLink("Edit", "Edit", new { id = item.id }) |
 79             @Html.ActionLink("Details", "Details", new { id = item.id }) |
 80             @Html.ActionLink("Delete", "Delete", new { id = item.id })
 81             </td>
 82         </tr>
 83     }
 84
 85     <tr>
 86         <td style="width: auto">
 87             <hr />
 88         </td>
 89
 90     </tr>
 91
 92
 93     @{ var ThirdModel = ViewData["ThirdModel"] as Sxy.Model.CradInfo;
 94         <tr>
 95
 96             <td>
 97                 @Html.DisplayFor(modelItem => ThirdModel.userId)
 98             </td>
 99             <td>
100                 @Html.DisplayFor(modelItem => ThirdModel.carNumber)
101             </td>
102             <td>
103                 @Html.DisplayFor(modelItem => ThirdModel.carQueryPassword)
104             </td>
105             <td>
106                 @Html.DisplayFor(modelItem => ThirdModel.createTime)
107             </td>
108             <td>
109                 @Html.ActionLink("Edit", "Edit", new { id = ThirdModel.id }) |
110             @Html.ActionLink("Details", "Details", new { id = ThirdModel.id }) |
111             @Html.ActionLink("Delete", "Delete", new { id = ThirdModel.id })
112             </td>
113         </tr>
114
115     }
116
117
118
119 </table>

时间: 2024-10-13 03:35:26

.NET 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中ViewBag、ViewData、TempData如何使用

对于我初学者来说,Mvc有很多都是我所迷惑的,也是我了解后所痴迷的.废话不多说,来谈谈我今天对Mvc这几个常用的对象的理解吧,这里面只简明概要叙述 ViewBag 获取动态视图数据字典 作用:给视图传递数据,不需要转换类型,由系统动态解析,比ViewData执行性能要差 ViewData   获取或设置视图数据的字典         给视图传递数据,需要转换成相应的类型,编写没有ViewBag方便,可读性强 TempData     临时数据的字典   给控制器或视图传递数据,需要和ViewDa

浅谈 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

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