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) > )
{ }
} 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>

.NET Mvc中ViewBag、ViewData、TempData如何使用的更多相关文章

  1. Asp.net MVC中的ViewData与ViewBag

    Asp.net MVC中的ViewData与ViewBag 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它 ...

  2. 浅谈 MVC中的ViewData、ViewBag和TempData

    ViewBag和TempData的区别 ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才 ...

  3. MVC中 ViewBag、ViewData和TempData区别

    MVC3中 ViewBag.ViewData和TempData的使用和区别 public dynamic ViewBag { get; } public ViewDataDictionary View ...

  4. MVC中的ViewData、ViewBag和TempData

    一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; ...

  5. mvc4中viewbag viewdata 和 tempdata的区别

    ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动态解析. eg: ViewBag.NumberObjs = new string[] { "on ...

  6. ASP.NET MVC 中的ViewData与ViewBag

    在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从 ...

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

    在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从 ...

  8. ASP.NET MVC ViewBag/ViewData/TempData区别

    ViewBag/ViewData public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; } Vi ...

  9. [转]Asp.net MVC中的ViewData与ViewBag

    本文转自:http://www.cnblogs.com/wintersun/archive/2012/01/21/2328563.html 在Asp.net MVC 3 web应用程序中,我们会用到V ...

随机推荐

  1. Spring JdbcTemplate

    参考链接: https://my.oschina.net/u/437232/blog/279530 http://jinnianshilongnian.iteye.com/blog/1423897 J ...

  2. C# WinForm国际化的简单实现

    软件行业发展到今天,国际化问题一直都占据非常重要的位置,而且应该越来越被重视.对于开发人员而言,在编写程序之前,国际化问题是首先要考虑的一个问题,也许有时候这个问题已经在设计者的考虑范围之内,但终归要 ...

  3. C#开发微信门户及应用(4)--关注用户列表及详细信息管理

    在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继续写这个系列的博客了,并不是对这个方面停止了研究,而是继续深入探索这方面的技术,为了更好的应用起 ...

  4. 浮动清除、before&after

    ::before 和 ::after属于伪元素,而 :before 和 :after属于伪类(CSS3 中为了区别伪元素和伪类为伪元素使用了双冒号)因此如果使用了 display 或者 width 等 ...

  5. iOS基本数据库存储方式 - CoreData

    CoreData 创建模型文件的过程 1.选择模板 2.添加实体 3.添加实体的属性[注意]属性的首字母必须小写 一.CoreData管理类(必备以下三个类对象) 1.CoreData数据操作的上下文 ...

  6. Quartz2.0以上版本的单机和集群

    (一)Quartz单机 1.Quartz简介 Quartz是一个完全由java编写的开源作业调度框架,能实现业务的定时调度.Quartz主要有三个核心调度器.任务和触发器: ①任务-JobDetail ...

  7. mysql数据类型

    一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUB ...

  8. 机器学习实战笔记(Python实现)-06-AdaBoost

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  9. 基于keepalived双主模型的高可用LVS

    背景知识: keepalived:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除, ...

  10. Windows Git安装指南

    步骤如下: 1.资源下载 :Git-1.9.4-preview20140815.exe http://code.google.com/p/tortoisegit/downloads/list 2.安装 ...