ASP.NET中TempData,ViewData和ViewBag的比较

学习ASP.NET有大约一个月了,一直都是半生不熟的,因为之前的很长时间都是在做java开发,没有时间 静下来心来学习,加上ASP.NET的框架也很复杂,一时间也是看的昏头转向的,所以只能看到一点记录一点, 慢慢积累,慢慢总结吧。

Action向View传递数据很简单,方式也很多,最直接的就是我们向View传递 Model,这本身就是MVC的意义所在。如果是显示一些消息,像是错误信息,可以使用 ViewData:

public ActionResult Index()
{
     ViewData["message"] = "Hello Word!";
     return View();
}

然后是视图:

<asp:Content ID="indexContent" 

ContentPlaceHolderID="MainContent" runat="server">
    <%: ViewData["message"]%>
</asp:Content>

实际效果如:

我们可以看到,ViewData就是 一个字典,它存放的是键值对。

既然Action可以向View传递数据,那么View是否可以修改数据然后再 回传给Action呢?

我们对代码这样修改:

public ActionResult Index()
{
      ViewData["message"] = "Hello Word!";
      return View();
}

public ActionResult About()
{
      string message = ViewData["message"] as string;
      if (message == "Hello")
      {
           ViewData["message2"] = "已经修改";
       }
      else
      {
           ViewData["message2"] = "没有修改";
      }
     return View();
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索view
, 数据
, action
, 对控件使用不熟
, public
, message
, viewbag
ViewData
,以便于您获取更多的相关知识。

时间: 2024-10-31 01:55:26

ASP.NET中TempData,ViewData和ViewBag的比较的相关文章

ASP.NET中MVC传递数据的几种形式总结_实用技巧

本文实例讲述了ASP.NET中MVC传递数据的几种形式.分享给大家供大家参考.具体如下: 在Asp.net mvc开发中,Controller需要向View提供Model,然后View将此Model渲染成HTML.这篇文章介绍三种由Controller向View传递数据的方式,实现一个DropDownList的显示. 第一种:ViewData ViewData是一个Dictionary.使用非常简单,看下面代码: public ActionResult ViewDataWay(int id) {

Asp.Net Mvc: TempData续

环境: Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0 一. 在Asp.Net Mvc应用程序中禁用SessionState 在Asp.Net Mvc: 浅析TempData机制一文中,我们简单探讨了Asp.Net Mvc中TempData的实现机制,由 此得知默认情况下,TempData的DataProvider实现为基于Session的存储方式. 采用Session作为默认的数据存储方式,原本合情合理,只是,有时候,我们的网站中却不允许使用 Sessio

asp.net中Session锁机制,第一次请求无效的问题

问题描述 第一次在CSDN上提问,请大牛们多关照啊背景描述:asp.net中,同一个会话(相同的SessionID)的不同请求,会由于Session锁机制产生阻塞问题,即如果两个请求都要修改Session的值,那么后到的请求要等前面的请求结束(锁释放)后才能访问到Session.但今天我发现了一个问题,首先贴测试代码:publicActionResultAbout(){Session["test"]="AboutMsg";ViewBag.Message=Sessio

ASP.NET中URL Routing和IIS上URL Rewriting的区别_自学过程

前言 前面有2篇帖子提到了关于URL Routing的特性,但是发现有很多人误会URL Routing就是URl Rewriting,其实2个虽然都提供相似的功能(提高友好的URL方便搜索引起收录),但是2者的原理和运行周期是完全不一样的,本篇文章我们就来分析一下具体有什么不同. 例子 在分析原理之前,我们先来做一个例子测试一下(IIS URL Rewrite模块需要IIS7的支持). 1.为Customer/1的URL建立对应的MVC程序 首先建立一个普通的MVC3程序,建立一个简单的Cust

ASP.NET中的状态管理

asp.net 我们在ASP中能够通过cookie.查询字符串.应用程序.对话等轻易地解决这些问题.现在到了ASP.NET环境中,我们仍然可以使用这些功能,只是它们的种类更多了,功能也更强大了. 管理互联网网页主要有二种不同的方法:客户端和服务器端. 1.客户端的状态管理: 在客户端.服务器之间的多次请求-应答期间,服务器上不保存信息,信息将被存储在网页或用户的计算机上. A.Cookie cookie是存储在客户端文件系统的文本文件中或客户端浏览器对话的内存中的少量数据,它主要用来跟踪数据设置

数据-新手求解asp.net:asp.net中如何根据自己的需要动态的生成表格并能输入保存

问题描述 新手求解asp.net:asp.net中如何根据自己的需要动态的生成表格并能输入保存 新手求解asp.net:asp.net中如何根据自己的需要输入行列数动态的生成表格行和列,并且在网页中生成的表格能够对数据的输入并保存到后台数据库中,如果表格不能实现输入的话用文本框形式又如何解决?如何动态生成文本框并保存到数据库表格中,急啊,谢谢大神指点,好人一生平安0.0! 解决方案 asp.net 动态表格生成1.ASP.NET动态生成HTML页面Asp.net利用Jquery动态添加表格的行数

在ASP.NET中使用计时器(Timer)

我在实验中发现在 ASP.NET 中可以使用计时器(Timer)完成一些定时动作.这一点可能会对我们的一些 Web 程序有益. 下面首先介绍我测试使用的一个例子: 首先在 global.asax 中的 Application_OnStart 事件过程中定义计时器,代码如下: [VB.NET] global.asax <%@ import Namespace="System.Timers" %> <script runat="server">

asp.net中ajax技术是否可以实现停止服务器端正在运行的按钮事件

问题描述 asp.net中ajax技术是否可以实现停止服务器端正在运行的按钮事件 给予B/S的webform项目 在服务器端有一个按钮事件 执行时间较长 所以就添加了一个按钮用来可以随时停止正在运行的耗时较长的按钮 问题是那个正在服务器端运行的按钮是否可以被其他按钮终止呢?求解答 解决方案 不可以.首先将长时间操作的任务放在按钮事件中就是错误的.按钮事件在页面回传前调用,ajax回发根本在页面加载后.你应该用消息队列.后台服务去执行长时间的任务. 解决方案二: 这个理论上是可以实现的. 服务器端

Asp.Net中使用Highcharts控件X轴的categories数据一多会被截断

问题描述 Asp.Net中使用Highcharts控件X轴的categories数据一多会被截断 xAxis: { tickmarkPlacement: ""on"" type: 'datetime' tickInterval: [<%=num %>] categories: [<%=lastModifyTime %>] } xAxis中 categories数据会被截断的问题怎么解决 解决方案 ASP.NET中通过WebService获取数