c# - 如何在数组中从 ViewBag 传递的 ASP.NET MVC View 中显示特定范围的项目

标签 c# arrays asp.net-mvc razor

在我的 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/

相关文章:

javascript - 如何将 jQuery 事件处理程序应用于多个缓存选择器?

arrays - 给定一个未排序的数组,求数组中两个元素之间的最大减法

arrays - 关于动态数组的困惑

c# - 重定向到 URL 而不是未经身份验证的 401

jquery - Knockout observablearray 将不接受使用服务器中的值更新的项目

c# - 更改测试运行器工作目录

c# - 从 Canvas Scaler (Unity) 检索缩放量

c# - 如何将 .NET Identity 与 HiQPdf 结合使用并呈现经过身份验证的 PDF

c# - NLog 控制台突出显示属性

c# - 在 .NET Framework 3.0 中将本地时间转换为 UTC