Как я могу отобразить указанный c диапазон элементов в представлении ASP. NET MVC, переданном из ViewBag в массиве - PullRequest
3 голосов
/ 02 февраля 2020

В моем HomeController.cs у меня есть:

public IActionResult Places ()
{
    string [] places = {"AA", "BB", "CC","DD","EE","FF","GG","HH","II","JJ"};
    ViewBag.fav = places;
}

В Places.cshtml Я хочу отобразить только 3 элемента массива, переданного в ViewBag.fav - это 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>

1 Ответ

4 голосов
/ 02 февраля 2020

После вашего последнего комментария pass many data to pass in the 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" };
        }
    }

Затем в вашем контроллере вы можете вернуть модель представления на страницу. as:

public class HomeController : Controller
{
    private ViewModel viewModel = new ViewModel();

    public IActionResult Index()
    {
        return this.View(viewModel);
    }

Представление получит параметр типа 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 отвечает за структуру данных, которая будет отображаться в представлении. Он может иметь больше свойств для обработки большего количества данных, отправляемых в представление. Он инкапсулирует данные и логи c.

Контроллер отвечает за создание экземпляра модели и передачу его в представление.

Представление имеет небольшую логику c - просто получить модель - и просто отображает данные, которые были переданы.

...