.NET Mvc中ViewBag、ViewData、TempData如何使用
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如何使用的更多相关文章
- Asp.net MVC中的ViewData与ViewBag
Asp.net MVC中的ViewData与ViewBag 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它 ...
- 浅谈 MVC中的ViewData、ViewBag和TempData
ViewBag和TempData的区别 ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才 ...
- MVC中 ViewBag、ViewData和TempData区别
MVC3中 ViewBag.ViewData和TempData的使用和区别 public dynamic ViewBag { get; } public ViewDataDictionary View ...
- MVC中的ViewData、ViewBag和TempData
一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; ...
- mvc4中viewbag viewdata 和 tempdata的区别
ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动态解析. eg: ViewBag.NumberObjs = new string[] { "on ...
- ASP.NET MVC 中的ViewData与ViewBag
在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从 ...
- Asp.net MVC中的ViewData与ViewBag(转)
在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从 ...
- ASP.NET MVC ViewBag/ViewData/TempData区别
ViewBag/ViewData public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; } Vi ...
- [转]Asp.net MVC中的ViewData与ViewBag
本文转自:http://www.cnblogs.com/wintersun/archive/2012/01/21/2328563.html 在Asp.net MVC 3 web应用程序中,我们会用到V ...
随机推荐
- WPF 自定义Grid双击事件
先设置Grid_MouseDown事件函数,然后在函数内增加如下代码 ) { //双击执行 } 更改数字可以区别单击和双击 感谢@一 定 会 去 旅 行
- Linq to sql 有什么办法可以实现消除列重复?
比如数据库里有一表,有两个字段:ID User1 小白2 小红3 小白 过滤User列为小白的重复项后,我想要得到:ID User1 小白2 小红 如果写db.linq.customer.Distin ...
- 每天一个设计模式-2 外观模式(Facade)
每天一个设计模式-2 外观模式(Facade) 1.生活中的示例 客户想要购买一台电脑,一般有两种方法: 1.自己DIY,客户需要知道组成电脑的所有电子器件,并且需要熟悉那些配件,对客户要求较高. ...
- mui scroll和上拉加载/下拉刷新
mui中 scroll和上拉加载/下拉刷新同时存在会出现两个滚动条 把/* */ /* //mui页面鼠标拖动代码: mui('.mui-scroll-wrapper').scroll({ dec ...
- 《.NET开发资源大全》
目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理( ...
- 这个图片切换动画只用CSS3实现
体验效果:http://hovertree.com/texiao/css3/39/ 这是一个使用纯CSS3实现的图文切换效果,没使用js脚本.点击左右箭头或者索圆点引按钮可以切换内容. 本特效中使用到 ...
- 禁止backspace键(退格键),但输入文本框时不禁止(兼容IE)
Ext实现方式: Ext.getDoc().on('keydown',function(e){ if(e.getKey() == 8 && e.getTarget().typ ...
- android 自定义动画
android自定义动画注意是继承Animation,重写里面的initialize和applyTransformation,在initialize方法做一些初始化的工作,在applyTransfor ...
- SQL中Round(),Floor(),Ceiling()函数的浅析
项目中的一个功能模块上用到了标量值函数,函数中又有ceiling()函数的用法,自己找了一些资料,对SQL中这几个函数做一个简单的记录,方便自己学习.有不足之处欢迎拍砖补充 1.round()函数遵循 ...
- Linq语法学习
关键词: select from where in into join on equals orderby descending DefaultIfEmpty() thenby submitChang ...