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 字典。这个简单而强大的功能使得控制器和视图之间的数据传输变得容易。