本文概述
- ASP.NET MVC ViewData
- ASP.NET MVC ViewBag
- ASP.NET MVC TempData
我们将通过示例讨论每个。
ASP.NET MVC ViewData它是对象的字典,并从ViewDataDictionary类派生。我们可以通过使用字符串作为键来访问值。它是类型安全的,并且需要对数据类型进行类型转换。这样可以避免错误,并在运行时检查空引用。仅在当前请求期间可以访问。
例
我们正在创建一个控制器并将视图返回到浏览器。该控制器将Courses ViewData传递给视图。
控制者
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace ViewBagExample.Controllers
{
public class ViewBagController : Controller
{
// GET: ViewBag
public ActionResult Index()
{
List<
string> Courses = new List<
string>();
Courses.Add("J2SE");
Courses.Add("J2EE");
Courses.Add("Spring");
Courses.Add("Hibernates");
ViewData["Courses"] = Courses;
return View();
}
}
}
视图
// Index.cshtml
<
!DOCTYPE html>
<
html>
<
head>
<
meta name="viewport" content="width=device-width" />
<
title>Index<
/title>
<
/head>
<
body>
<
h2>List of Courses<
/h2>
<
ul>
@{
foreach (var Courses in ViewData["Courses"] as List<
string>)
{
<
li> @Courses<
/li>
}
}
<
/ul>
<
/body>
<
/html>
输出:
它将以下输出输出到浏览器。
文章图片
ASP.NET MVC ViewBag这是一个动态属性,类似于ViewData。它是在.NET Framework 4.0版中引入的。它用于将数据从控制器发送到视图页面。 ViewBag可以动态获取和设置值,因此将其称为动态属性。它不需要类型转换,也不需要动态转换类型。
例
在这里,在此示例中,我们正在实现ViewBag属性。控制器和索引文件如下。
控制者
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace ViewBagExample.Controllers
{
public class ViewBagController : Controller
{
// GET: ViewBag
public ActionResult Index()
{
List<
string> Courses = new List<
string>();
Courses.Add("J2SE");
Courses.Add("J2EE");
Courses.Add("Spring");
Courses.Add("Hibernates");
ViewBag.Courses = Courses;
return View();
}
}
}
视图
<
!DOCTYPE html>
<
html>
<
head>
<
meta name="viewport" content="width=device-width" />
<
title>Index<
/title>
<
/head>
<
body>
<
h2>List of Courses<
/h2>
<
ul>
@{
foreach (var Courses in ViewBag.Courses)
{
<
li> @Courses<
/li>
}
}
<
/ul>
<
/body>
<
/html>
输出:
索引文件将以下输出输出到浏览器。
文章图片
ASP.NET MVC TempData它代表一组仅在一个请求到下一个请求之间持续存在的数据。它是从TempDataDictionary派生的,我们可以像在ViewData中一样使用其对象来传递数据。 TempData的值仅在一个请求到下一个请求之间持续存在。保留用于标记密钥以保留数据,以便可以为下一个请求保留。
我们还可以使用TempData将数据从一个动作传递到另一个动作。让我们来看一个例子。
例
控制者
// TempDataController.cs
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace ViewBagExample.Controllers
{
public class ViewBagController : Controller
{
// GET: ViewBag
public ActionResult Index()
{
List<
string> Courses = new List<
string>();
Courses.Add("J2SE");
Courses.Add("J2EE");
Courses.Add("Spring");
Courses.Add("Hibernates");
TempData["Courses"] = Courses;
return View();
}
}
}
视图
// Index.cshtml
<
!DOCTYPE html>
<
html>
<
head>
<
meta name="viewport" content="width=device-width" />
<
title>Index<
/title>
<
/head>
<
body>
<
h2>List of Courses<
/h2>
<
ul>
@{
foreach (var Courses in TempData["Courses"] as List<
string>)
{
<
li> @Courses<
/li>
}
}
<
/ul>
<
/body>
<
/html>
输出:
【asp.net mvc ViewData、ViewBag和TempData】该索引文件将以下输出输出到浏览器。
文章图片
推荐阅读
- asp.net razor标记语法
- asp.net mvc脚手架
- asp.net mvc验证
- asp.net mvc路由
- asp.net mvc boostrap框架
- asp.net mvc身份验证
- asp.net mvc entity框架
- asp.net mvc视图
- asp.net mvc模型绑定