ASP.NET MVC中ViewData、ViewBag和TempData

1.ViewData

1.1 ViewData继承了IDictionary<string, object>,因此在设置ViewData属性时,传入key必须要字符串型别,value可以是任意类型。

1.2 ViewData它只会存在这次的HTTP要求而已,而不像Session可以将数据带到下HTTP要求。

    public class TestController : Controller
    {
        public ActionResult Index()
        {
            ViewData["msg"] = "123123";
            return View();
        }
    }
@{
    ViewBag.Title = "Index";
}

<h2>页面</h2>
<h2>@ViewData["msg"]</h2>

2.ViewData的扩张属性ViewData.Model

    public class TestController : Controller
    {
        public ActionResult Index()
        {
            User aa = new User() { Age = 1, Name = "linq" };
            //ViewData.Model = aa;
            return View(aa);
        }
    }
@{
    ViewBag.Title = "Index";
}
@model MvcApplication1.Models.User
<h2>页面</h2>
<h2>@Model.Age</h2>
<h2>@Model.Name</h2>

3.ViewBag

3.1 严格来说ViewBag和ViewData的区别就是ViewBag是dynamic动态型别

    public class TestController : Controller
    {
        public ActionResult Index()
        {
            User aa = new User() { Age = 1, Name = "linq" };
            ViewBag.User = aa;
            return View();
        }
    }
@{
    ViewBag.Title = "Index";
}

<h2>页面</h2>
<h2>@ViewBag.User.Age</h2>
<h2>@ViewBag.User.Name</h2>

4.TempData

4.1 TempData的信息在"一次网页要求内有效"(ActionResult的返回类型必须为RedirectToRouteResult或RedirectToRouteResult类别,除此以外只要有取用的TempData的键值,默认就会在当次网页就要求清除,但你只是单纯设置了TempData的值,并没有读取行为的话,TempData还是会保留到下次使用)

    public class TestController : Controller
    {
        public ActionResult Index(string msg)
        {
            TempData["msg"] = msg;
            return RedirectToAction("Index2");
        }

        public ActionResult Index2()
        {
            return View();
        }
    }
时间: 2024-10-28 23:48:15

ASP.NET MVC中ViewData、ViewBag和TempData的相关文章

ASP.NET MVC中viewData、viewBag和templateData的使用与区别

一:类型比较 1.1)ViewBag是动态类型(dynamic). 1.2)ViewData是一个字典型的(Dictionary)-->TempDataDictionary. 1.3)TempData是一个字典型的(Dictionary)-->ViewDataDictionary. 二:生命周期和作用域 2.1)ViewBag生命周期和View相同,只能作用于一个View. 2.2)ViewData生命周期和View相同,只能作用于一个View. 2.3)TempData生命周期为被调用前一直

mvc中viewdata 和viewbag的区别

mvc中viewdata 和viewbag的区别 2013-06-18 15:43:45|  分类:          MVC                          |举报        |字号 订阅 ViewData                                                                           ViewBag 它是Key/Value字典集合                                     

ASP.NET MVC中的两个Action之间值的传递--TempData

一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictionary,顾名思义是一个字典类.TempData在ASP.NET MVC中的作用是:可用于在Action执行过程之间传值.简单的说,你可以在执行某个Action的时候,将数据存放在TempData中,那么在下一次Action执行过程中可以使用TempData中的数据. 如: 1 public Actio

Asp.Net MVC中DropDownListFor的用法(转)

2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T  List<T>的第一个,最后一个不就是M吗? @Html.DropDownListFor(model=>model.First().Title, ViewData["Title"] as List<SelectListItem>, "标题", @"dropdown

Asp.net MVC中 Controller 与 View之间的数据传递

在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用ViewBag.user (3)使用TempData["user"] (4)使用Model(强类型) 区别: (1)ViewData与TempData方式是弱类型的方式传递数据,而使用Model传递数据是强类型的方式. (2)ViewData与TempData是完全不同的数据类型,View

(四)ASP.NET MVC 中 Controller 给 View 传递数据的方式

1. ViewData: 以 ViewData["keyname"] = value 这样键值对的方式进行数据传送.在对应的 cshtml 中用 @ViewData["keyname"] 来获取值. 2. ViewBag: ViewBag 是 dynamic 类型的,是对 ViewData 的一人动态类型封装,用起来更方便,和 ViewData 共同操作一个数据 .在 Controller 中使用 ViewBag.keyname=value 来赋值,在 cshtml

asp.net MVC中控制器获取表单form提交的数据之实体类数据

第一次写记录文章,难免有不足之处:欢迎指出. 1.新建一个mvc项目如: 2.新建一个Test.cs 注意get,set方法不能简写 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System; using System.Collections.Generic; using System.Linq; usi

Asp.net MVC中关于@Html标签Label、Editor使用

@Html帮助器简单说明,记录些基本的跟HTML中对应的@html帮助器,@Html基本包含了html中的表单控件和常用Html在@Html中,带有For的主要是针对强类型的Html类型.用于说明@Html中标签,定义Student对象用于辅助说明, [csharp] view plain copy public class Student { /// <summary> /// 姓名 /// </summary> /// [DisplayName("姓名")]

Asp.net MVC 中Controller返回值类型ActionResult

内容转自 http://blog.csdn.net/pasic/article/details/7110134 Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonActionAttribute特性的(NoAction) 不能被重载 必须返回ActionResult类型 如: [csharp] view pl