ASP. net core 3.1 Сериализация списка в модели и Десериализация в javacript - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь получить список объектов из модели и использовать его в javascript. Каков наилучший метод сериализации Списка в Модели и десериализации его в коде javascript, чтобы я мог oop просмотреть список в JS. Я должен быть в состоянии сохранить список в переменной javascript. Список моделей: publi c Список postsList {get; набор; }

Примечание: если вы можете предоставить указанный c код, который был бы идеальным.

1 Ответ

0 голосов
/ 17 апреля 2020

В MVC это делается простым способом (с использованием строго типизированного представления или только ViewBag). Предположим, у вас есть 2 модели - FooViewModel:

    public class FooViewModel
{
    public int FooId { get; set; }
    public List<BarViewModel> Bars { get; } = new List<BarViewModel>();
}

и BarViewModel:

 public class BarViewModel
{
    public int BarId { get; set; }

    public string BarName { get; set; }

    public string BarTitle { get; set; }

    public int IdFooViewModel { get; set; }
}

Стандартный HomeController был немного изменен:

    public IActionResult Index()
    {
        var vm = new FooViewModel
        {
            FooId = 1,
            Bars =
            {
                new BarViewModel {BarId = 1, BarName = "First Bar", BarTitle = "I am here!", IdFooViewModel = 1},
                new BarViewModel {BarId = 2, BarName = "Second Bar", BarTitle = "Me too!", IdFooViewModel = 1}
            }
        };
        return View(vm);
    }

На Во внутреннем интерфейсе бритвы мы создаем объект javascript:

@{
    ViewData["Title"] = "Home Page";
}
@using System.Collections.Specialized
@using System.Text.Json
@model FooViewModel

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Index works!</p>
</div>

@section Scripts {
    <script>
        var vm = window.viewModel = JSON.parse('@Html.Raw(JsonSerializer.Serialize(Model))');
        console.dir(vm);
    </script>
}

Обратите внимание, разумно используется хелпер тега @Html.Raw - razor выполняет кодирование html, которое искажает кавычки данных json. Вот почему мы избавляемся от html -кодирования. Но это может быть критично для безопасности - ваш клиент должен доверять вашему бэкэнду.

Затем клиентская сторона десериализует длинный строковый литерал для получения данных.

Result]

...