ASP.NET ViewBag
最后修改于 2023 年 10 月 18 日
在本文中,我们将展示如何在ASP.NET中使用ViewBag在控制器和视图之间传递数据。
ASP.NET 是一个跨平台、高性能、开源的框架,用于构建现代、支持云的 Web 应用程序。它由 Microsoft 开发。
控制器是一个处理客户端发送的HTTP请求的类。它检索模型数据并向客户端返回响应。视图显示数据并处理用户交互。
ViewBag是一个控制器属性,用于将数据从控制器传递到视图。它用于传递弱类型数据。ViewBag适用于在控制器和视图之间传递少量数据。
如果要传递强类型数据,可以使用ViewModel。
ASP.NET ViewBag示例
在下面的示例中,我们将展示如何使用ViewBag。
Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(endppoints =>
{
endppoints.MapDefaultControllerRoute();
});
app.Run("https://:3000");
我们设置控制器和视图。
Controller/HomeController.cs
using Microsoft.AspNetCore.Mvc;
namespace ViewBagEx.Controllers;
public class HomeController : Controller
{
public IActionResult Index()
{
ViewBag.Now = DateTime.Now;
return View();
}
[HttpGet("words")]
public IActionResult Words()
{
var words = new List<string> { "red", "class", "rock", "war" };
ViewBag.Words = words;
return View();
}
}
在控制器中,我们有两个操作。第一个返回当前日期和时间,第二个返回单词列表。
ViewBag.Now = DateTime.Now;
我们将当前日期和时间设置到ViewBag。
var words = new List<string> { "red", "class", "rock", "war" };
ViewBag.Words = words;
这里我们设置了一个字符串列表。
Views/Home/Index.cshtml
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home page</title>
</head>
<body>
<p>
@ViewBag.Now
</p>
</body>
</html>
在此视图中,我们显示当前日期和时间。我们通过@ViewBag访问bag。
Views/Home/Words.cshtml
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Words</title>
</head>
<body>
<ul>
@{
foreach (var word in ViewBag.Words)
{
<li>@word</li>
}
}
</ul>
</body>
</html>
在此视图中,我们在HTML列表中显示单词。我们在foreach循环中遍历单词列表。
$ dotnet watch
我们启动应用程序并导航到localhost:3000和localhost:3000/words。
在本文中,我们展示了如何使用ViewBag在控制器和视图之间传递数据。