ASP.NET ViewData
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 ViewData 字典。ViewData 是在 MVC 应用程序中将数据从控制器传递到视图的基本机制。
ASP.NET MVC 提供了多种在控制器和视图之间传输数据的方法。ViewData 是可用的最简单、最直接的方法之一。
基本定义
ViewData 是一个派生自 ViewDataDictionary 类的字典对象。它允许在请求-响应周期中将数据从控制器传递到视图。
ViewData 字典使用字符串键来存储和检索数据。数据仅在当前请求期间可访问,并在请求结束时清除。
由于 ViewData 存储的是对象,因此在检索值时需要进行类型转换。它非常适合不需要复杂模型绑定的少量数据。
ASP.NET ViewData 示例
以下示例演示了如何在 ASP.NET MVC 应用程序中使用 ViewData。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();
app.UseStaticFiles();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
这设置了一个基本的 ASP.NET MVC 应用程序。AddControllersWithViews 方法启用了带有视图支持的 MVC。默认路由映射到 HomeController。
using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
public IActionResult Index()
{
ViewData["Title"] = "Welcome to our Store";
ViewData["Message"] = "Today's special offers:";
var products = new List<string>
{
"Laptop - 15% off",
"Smartphone - 10% off",
"Headphones - 20% off"
};
ViewData["Products"] = products;
ViewData["DiscountDate"] = DateTime.Now.AddDays(1);
return View();
}
}
控制器设置了几个 ViewData 值:一个标题字符串、一个消息字符串、一个产品列表和一个折扣到期日期。这些值将在相应的视图中可用。
@{
Layout = "_Layout";
}
<h2>@ViewData["Title"]</h2>
<p>@ViewData["Message"]</p>
<ul>
@foreach (var product in (List<string>)ViewData["Products"])
{
<li>@product</li>
}
</ul>
<p>
Offers valid until:
@(((DateTime)ViewData["DiscountDate"]).ToString("MMMM dd, yyyy"))
</p>
视图检索并显示所有 ViewData 值。请注意,产品列表和 DateTime 值需要显式转换。标题和消息直接显示。
此示例展示了 ViewData 在处理不同数据类型方面的灵活性。但是,请记住 ViewData 值不是强类型的,如果转换不正确,可能会导致运行时错误。
来源
Microsoft ASP.NET MVC Views 文档
在本文中,我们探讨了 ASP.NET 8 中的 ViewData 字典。这个简单而强大的功能使得控制器和视图之间的数据传输变得容易。