案例:

     public ActionResult Index()
{
ViewData["num"] = ;
ViewData.Add("num2", ); ViewBag.myNum = ;
TempData["myNum2"] = ; Student stu = new Student()
{
id = "",
name = "张三",
sex = "男"
};
return View(stu);
}

页面:

@*使用Model赋值,需要引入下面的命名空间*@
@using ViewBag_Data.Models;
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<p>
Model赋值
@Model.id
@Model.name
@Model.sex
</p>
我是ViewData:@((int)(ViewData["num"]) + 1) <br />
我是ViewData方式二:@((int)ViewData["num2"] + 1) <br />
我是ViewBag:@(ViewBag.myNum + 1) <br />
我是TempData:@((int)TempData["myNum2"] + 1) <br />
</div>
</body>
</html>

ViewData和TempData的区别:

        public ActionResult Test1()
{ TempData["num"] = "aaaaa";
ViewData["num"] = "aaaaa";
return RedirectToAction("Test2");
}
public ActionResult Test2()
{
string text1 = TempData["num"] as string;
string text2 = ViewData["num"] as string;
return View();
}

执行结果:

ViewData的值已经被清空,而TempData没有被清空,这是它们的区别之一,我们可以用TempData在Controller之间传递数据。

ViewData丶ViewBag和TempData-LMLPHP

1、ViewBag和ViewData的生命周期和Action相同(仅对当前View有效),不能跨越请求,用来给View提供数据
ViewData是使用类似于Dictionary的方式读写:ViewData["uname"]="XXX";
ViewBag是使用dynamic方式进行读写:ViewBag.uname="XXX";
2、TempData是保存在Session中的,在本次请求中把数据放到TempData中,在下次请求的时候可以从TempData中读取数据,在下次请求处理结束后就从Session中销毁了。TempData主要从来给下个请求传递不方便放到url或者cookie中的临时数据使用。
05-12 07:09