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. webParts与Web部件

    web部件是ASP.NET WebForm里面的服务器控件,它涵盖的内容比较多,鉴于这种状况的话鄙人不打算深究下去了,只是局限于了解web.config配置里面的配置内容则可. 那么也得稍微说说啥是W ...

  2. C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

    我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特 ...

  3. android权限

    一.WebView 访问internet 的权限: 1.在layout中增加一个WebView 控件: <WebView android:layout_width="match_par ...

  4. Inter1-关于i++和++i

    Q:关于i++和++i计算以下公式的结果 ```public static void main(String[] args) { int i = 1; System.out.println(" ...

  5. 在centos 服务器上安装phalcon框架 undefined symbol: php_pdo_get_dbh_ce

    去git 下载对应版本的框架 命令行: sudo yum install php-devel pcre-devel gcc make 然后使用GIT clone到服务器上,然后 git clone g ...

  6. Mockjs,模拟数据生成器

    (推荐使用)Mock.js是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试. 提供了以下模拟功能: 1. 根据数据模板生成模拟数据. 2. 模拟Ajax请求,生成并返回模拟 ...

  7. html5 canvas首屏自适应背景动画循环效果代码

    模板描述:html5 canvas首屏自适应背景动画循环效果代码 由于动态图太大,怕以后服务器受不了,所以现在都改为静态图了,大家点击演示地址一样的,希望大家喜欢,你们的支持就是小海的动力!! 欢迎大 ...

  8. H5 meta小结

    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1, ...

  9. 在Outlook中查看预览SharePoint文档库的文档

    本文概况 阅读时间: 约2分钟 适用版本:SharePoint Server 2010及以上 面向用户:普通用户,管理员 难度指数:★★☆☆☆ 在日常工作中,总有一些常用的文档需要经常打开查看,其实我 ...

  10. 【转】Android SDK Samples,学习Android的好方法

    转载地址:http://blog.csdn.net/rowland001/article/details/50886288 从今天开始呢,我要开始学习Google家自己出的Android代码示例,总觉 ...