📅  最后修改于: 2023-12-03 15:21:00.611000             🧑  作者: Mango
在 ASP.NET MVC 中,ViewBag 是一个动态对象,可以使控制器和视图之间轻松传递数据。ViewBag 中的 "即将到来" 部分是指要在视图中显示的数据,通常用于显示将要到来的事件、促销或新闻等信息。
在控制器中,我们可以使用 ViewBag 将数据传递到视图中,例如:
public ActionResult Index()
{
ViewBag.UpcomingEvents = new List<string>
{
"ASP.NET Core Workshop - May 12-13",
"Advanced AngularJS - May 15-16",
"MVC Architecture - May 18-19"
};
return View();
}
在视图中,我们可以像使用 C# 对象一样使用 ViewBag。
<h2>Upcoming Events</h2>
<ul>
@foreach (string e in ViewBag.UpcomingEvents)
{
<li>@e</li>
}
</ul>
使用 ViewBag 虽然方便,但有一些限制。
public ActionResult Index()
{
ViewBag.UpcomingEvents = new List<string>
{
"ASP.NET Core Workshop - May 12-13",
"Advanced AngularJS - May 15-16",
"MVC Architecture - May 18-19"
};
ViewBag.Recipes = new List<string>
{
"Grilled chicken with lemon",
"Apple cider glazed pork chops",
"Rosemary roasted potatoes"
};
return View();
}
public class MyViewModel
{
public List<string> UpcomingEvents { get; set; }
public List<string> Recipes { get; set; }
}
public ActionResult Index()
{
var model = new MyViewModel()
{
UpcomingEvents = new List<string>
{
"ASP.NET Core Workshop - May 12-13",
"Advanced AngularJS - May 15-16",
"MVC Architecture - May 18-19"
},
Recipes = new List<string>
{
"Grilled chicken with lemon",
"Apple cider glazed pork chops",
"Rosemary roasted potatoes"
}
};
return View(model);
}
@model MyViewModel
<h2>Upcoming Events</h2>
<ul>
@foreach (string e in Model.UpcomingEvents)
{
<li>@e</li>
}
</ul>
<h2>Recipes</h2>
<ul>
@foreach (string r in Model.Recipes)
{
<li>@r</li>
}
</ul>
使用 ViewBag 可以在控制器和视图之间传递数据,但可能会带来一些限制。在使用 ViewBag 时,请遵循最佳实践,例如按名称对属性进行分类。对于更好的可读性、维护性和类型安全,请尽可能使用 ViewModel。