Динамическое отображение компонентов и данных в представлении .NET CORE MVC

avatar
Imaan_R
8 августа 2021 в 22:29
76
1
0

У меня есть массив объектов, которые я хочу отображать в представлении. Для каждого объекта я также хочу создать контейнер, в котором хранятся данные, однако я не уверен, как связать HTML с Javascript. На данный момент у меня есть скрипт, который считывает массив объектов, а затем перебирает каждый объект - код скрипта. Однако на этом этапе цикла for я пытаюсь добавить <div> или <p>, чтобы я мог отображать информацию на экране, но получаю ошибки.

Другой подход, который я пробовал, состоял в том, чтобы попытаться отобразить информацию в html следующим образом: html render подход - однако при этом я также получаю ошибки времени выполнения ошибка времени выполнения для подхода 2 .

Я не знаю, как отображать html внутри скрипта или как использовать данные из скрипта внутри html.

Источник

Ответы (1)

avatar
Yiyi You
9 августа 2021 в 03:12
0

Вот рабочая демонстрация:

Модель:

public class Marker
    {
        public string EventName { get; set; }

    }

Действие:

public IActionResult xxx()
        {
            ViewBag.Markers = new List<Marker> { new Marker { EventName = "m1" }, new Marker { EventName = "m2" }, new Marker { EventName = "m3" } };
            return View();
        }

Вид:

@foreach (var marker in ViewBag.Markers)
{
    <p>@marker.EventName</p>
}

результат:

enter image description here

Imaan_R
9 августа 2021 в 09:14
0

Привет, большое спасибо. Однако, просто интересно в вашем действии, можно ли динамически добавлять маркеры? Например, на данный момент у вас есть номер исправления 3, но возможно ли иметь цикл for и для каждого элемента времени, когда он зацикливается, добавлять новый маркер?

Yiyi You
9 августа 2021 в 09:18
0

Данные в представлении зависят от ViewBag.Markers, если вы хотите обновить данные в представлении, вам необходимо обновить ViewBag.Markers, а затем return View(). Так что представление будет обновлено. Например, количество ViewBag.Markers равно 10, цикл for покажет 10 <p></p>.