在我的 HomeController.cs
中,我有:
public IActionResult Places ()
{
string [] places = {"AA", "BB", "CC","DD","EE","FF","GG","HH","II","JJ"};
ViewBag.fav = places;
}
在 Places.cshtml
中,我只想显示 ViewBag.fav
中传递的数组的 3 个元素 - 即 AA、BB 和 CC
<ul class="list-group">
<li class="list-group-item active">We Love These</li>
@foreach(var x in ViewBag.fav)
{
<li> @x </li>
}
</ul>
我想在这里显示其他元素
<ul class="list-group">
<li class="list-group-item active">Our Fav</li>
@foreach(var x in ViewBag.fav)
{
<li> @x </li>
}
</ul>
最佳答案
根据您的上一条评论传递许多数据以传递到 View 中
,您应该使用 View 模型。
类似于:
public class ViewModel
{
public List<string> Places { get; set; }
public List<string> MostFavoritePlaces => Places.Take(3).ToList();
public List<string> FavoritePlaces => Places.Skip(3).ToList();
public ViewModel()
{
Places = new List<string>{ "AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ" };
}
}
然后在 Controller 中,您可以将 View 模型返回到页面,如下所示:
public class HomeController : Controller
{
private ViewModel viewModel = new ViewModel();
public IActionResult Index()
{
return this.View(viewModel);
}
View 将接收 ViewModel 类型的参数,如下所示:
@model ViewModel;
@{
ViewData["Title"] = "Home Page";
}
<ul class="list-group">
<li class="list-group-item active">We Love These</li>
@foreach (var x in Model.MostFavoritePlaces)
{
<li> @x </li>
}
</ul>
<ul class="list-group">
<li class="list-group-item active">Our Fav</li>
@foreach (var x in Model.FavoritePlaces)
{
<li> @x </li>
}
</ul>
现在 ViewModel 类负责将呈现到 View 中的数据结构。 它可以具有更多属性,以便处理发送到 View 的更多数据。 它封装了数据和逻辑。
Controller 负责创建模型的实例并将其传递给 View 。
View 几乎没有逻辑 - 只是接收模型 - 并且只渲染已传递的数据。
关于c# - 如何在数组中从 ViewBag 传递的 ASP.NET MVC View 中显示特定范围的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60023819/