ASP.NET-viewBag Viewdata Tempdata
ASP.NET MVC提供3种选择ViewData,ViewBag,TempData来从controller到View及后续请求传输数据。
ViewData和ViewBag很相似,而TempData有所不同。
让我们来讨论或总结三者的要点:
ViewBag 和 ViewData的区别:
- ViewData 是一个字典对象,从ViewDataDictionary 类继承,已string(字符串)作为键来访问对象。
- ViewBag 是一个动态属性,是c#4.0新增的优秀的动态特性。
- ViewData 需要进行数据类型转换,判断书否为null值来防止出错。
4.ViewBag 不需要类型转换。
5.ViewBag和Viedata只能在一个action方法中使用,两个同名的aciton仍然是2个的意思,不算一个aciton方法
ViewBag & ViewData 的例子:
public ActionResult Index(){ViewBag.Name = "Monjurul Habib";return View();}public ActionResult Index(){ViewData["Name"] = "Monjurul Habib";return View();}
@ViewBag.Name@ViewData["Name"]
TempData:
这个好像是不同的Action函数中才能使用,要是同一个action函数中不能!
TempData也是一个字典类型,从TempDataDictionary类继承而来。存储在短暂的会话中。键 为string类型,值为object类型。
所不同的是对象的生命周期。TempData生命周期是一个http请求的时间。意思就是从一个页面跳转到另一个页面的时间。保持302/303的重新定向因为他们是在同一个请求中。
public ActionResult Page(){TempData["v"] = "jingya";return View();}public ActionResult Rank(){return Content(TempData["v"].ToString());}
当你从一个control到另一个control或一个page到另一个page之间跳转的时候帮你保存数据。它内部使用了会话(session)机制。主要用在从一个页面跳到另外一个页面期间来存储数据。
需要进行数据类型转换,检查是否为null来规避错误。通常用于存储一个时间信息,错误信息或验证信息。
public ActionResult Index(){ViewBag.name = TempData["name"];return View();}public ActionResult About(){ViewBag.Message = "Your application description page.";TempData["name"] = "jingya";return RedirectToAction("Index");}
最后一个机制就是Session,工作方式就像viewdata,字典类型等键值方式,键一般为string类型,值可以是object类型。这种方式,是把数据存储在客户端的cookie里,可以保存较长的一段时间。也需要进行行验证,但是没有安全保障。关于ViewData 和viewbag你需要在程序中较灵活的应运。因为每一个页面的动作都贯穿asp.net 整个生命周期。你可以在子页面中使用viewdata/viewbag,但是要细心,你是不是用它来填充无关的数据,会污染你的控制器。
ASP.NET-viewBag Viewdata Tempdata的更多相关文章
- ASP.NET MVC ViewBag/ViewData/TempData区别
ViewBag/ViewData public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; } Vi ...
- ASP.NET MVC程序传值方式:ViewData,ViewBag,TempData和Session
转载原地址 http://www.cnblogs.com/sunshineground/p/4350216.html 在ASP.NET MVC中,页面间Controller与View之间主要有以下几种 ...
- 译:什么是ViewData的, ViewBag和TempData? - MVC为当前和后续请求之间传递数据的三种方法
译文出处:http://www.codeproject.com/Articles/476967/WhatplusisplusViewData-cplusViewBagplusandplusTem AS ...
- 浅谈 MVC中的ViewData、ViewBag和TempData
ViewBag和TempData的区别 ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才 ...
- ViewData、ViewBag、TempData、Session的区别与联系
简介 这篇文章是我在学习ASP.NET MVC程序传值方式梳理总结的笔记.在ASP.NET MVC中,页面间和Controller与View之间主要有以下几种小量数据传值方式, ViewData.Vi ...
- ViewData、ViewBag和TempData比较
一.ViewData.ViewBag和TempData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { ...
- MVC5-8 ViewData、ViewBag、TempData分析
MVC中Contoller与视图的数据传输 后台的值显示到界面上,我们有几种方式呢.MVC给我们提供了ViewData.ViewBag.TempData.Model这几种方式,当然我们也可以用ajax ...
- 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)
简 介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...
- 关于ViewData,ViewBag,TempData三者学习记录!
关于ViewData,ViewBag,TempData三者学习分享! 1.ViewData和TempData是字典类型,赋值方式用字典方式,ViewData["Key"] . 2. ...
随机推荐
- UVA10200 Prime Time
/* UVA10200 Prime Time https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8& ...
- H3C防火墙——回环流量问题(内网终端通过外网IP访问内部服务器)
http://www.bubuko.com/infodetail-1533703.html
- 清除eclipse中的SVN账号信息
清除eclipse中的SVN账号信息 参考了:http://blog.csdn.net/ningtieming/article/details/60469346 需要先在资源管理器中使用Tortois ...
- CommonJS,AMD,RequireJS的差别
RequireJS实现了AMD的API. CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容.简单地实现一个CommonJS的定义就像以下这样: // someModul ...
- [Angular] Upgrade existing Angular app to Progressive Web App
If you alread have an existing Angular application and want to upgrade to progressive web app. 1. In ...
- “XXX.Index”不扩展类“System.Web.UI.Page”,因此此处不同意的问题
"XXX.Index"不扩展类"System.Web.UI.Page",因此此处不同意的问题 原因:设计页面继承的路径和后台.cs页面类的路径不一致造成的 看下 ...
- USACO 2.1 Healthy Holsteins
Healthy HolsteinsBurch & Kolstad Farmer John prides himself on having the healthiest dairy cows ...
- 第七章 用户输入和while 循环
7.1 创建多行字符串的方式: 01 prompt="if you tell me who you are, we can personalize the message you see.& ...
- linux 下Redis 5.0主从复制(一主二从)哨兵模式的搭建
文档结构如下: 一.环境说明: 作用 IP地址 端口 操作系统版本 安装目录 哨兵文件 主库 172.16.10.80 6379 Redhat 6.7 /redis5.0/redis-5.0.0 Se ...
- 不用copy代码--eclipse使用git提交项目-转
原文地址:http://blog.csdn.net/u014079773/article/details/51595127 准备工作: 目的:eclipse使用git提交本地项目,提交至远程githu ...