首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ASP.net核心3.1:在模型中序列化列表并在JavaScript中反序列化

ASP.net核心3.1:在模型中序列化列表并在JavaScript中反序列化
EN

Stack Overflow用户
提问于 2020-04-16 22:43:07
回答 1查看 259关注 0票数 0

我正在尝试从模型中获取对象列表,并在JavaScript中使用它。在模型中序列化列表并在JavaScript代码中反序列化它以便我可以在JS中循环列表的最佳方法是什么?我应该能够将列表保存在一个JavaScript变量中。

型号列表:

代码语言:javascript
运行
AI代码解释
复制
public List<Post> postsList { get; set; }

如果您可以提供特定的代码,这将是完美的。

EN

回答 1

Stack Overflow用户

发布于 2020-04-17 01:06:18

在MVC中,这是以一种直接的方式完成的(使用强类型视图或仅使用ViewBag)。假设你有两个模型- FooViewModel:

代码语言:javascript
运行
AI代码解释
复制
    public class FooViewModel
{
    public int FooId { get; set; }
    public List<BarViewModel> Bars { get; } = new List<BarViewModel>();
}

和BarViewModel:

代码语言:javascript
运行
AI代码解释
复制
 public class BarViewModel
{
    public int BarId { get; set; }

    public string BarName { get; set; }

    public string BarTitle { get; set; }

    public int IdFooViewModel { get; set; }
}

默认HomeController已稍作更改:

代码语言:javascript
运行
AI代码解释
复制
    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对象:

代码语言:javascript
运行
AI代码解释
复制
@{
    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编码的原因。但这可能是安全关键--你的客户应该信任你的后端。

然后,客户端对长字符串进行反序列化以获取数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61261277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档