JSON.. NET客户端反序列化

本文关键字:反序列化 客户端 NET JSON | 更新日期: 2023-09-27 18:10:22

在c#中,我从控制器中做到这一点:

public ActionResult GetCompanies()
{
    var vm = new CompanyViewModel { jsonData = JsonConvert.Serialize(_repository.All<Company>()) };
    return View(vm);
}

ViewModel看起来像这样:

public CompanyViewModel
{
    public string jsonData {get;set}
}

客户端:

@model MyWebApp.ViewModels.CompanyViewModel
@Scripts.Render("~/bundles/knockout")
<script type="text/javascript">
   var serverData = <!-- Many Things To Do Here -->
</script>

<!-- Many Things To Do Here -->部分,您可以做一些事情来将服务器数据放入JavaScript对象。

什么是最好的方法来做到这一点,因为我有问题与JSON.parse做一些字符JSON。净序列化。

只是把普通数据放在那里,好吧(它工作):var serverData = @Html.Raw(@Model.jsonData)

这里还应该/可以做什么?

JSON.. NET客户端反序列化

与其创建一个模型来保存JSON字符串,不如将普通的。net对象传递给视图,并在那里将其序列化为JSON:

在你的控制器中:

public ActionResult GetCompanies()
{
    return View(_repository.All<Comapny>());
}

那么在你看来:

<script>
    var companies = @Html.Raw(JsonConvert.SerializeObject(Model));
</script>

如果您想要/需要视图中的强类型模型,您应该将CompanyViewModel更改为:

public class CompanyViewModel
{
    public IList<Company> Companies {get; set;}
    //Or whatever sort of collection your repository returns
}

在控制器

public ActionResult GetCompanies()
{
    var vm = new CompanyViewModel { Companies = _repository.All<Company>() };
    return View(vm);
}

那么在你看来:

@model MyWebApp.ViewModels.CompanyViewModel
<script>
    var companies = @Html.Raw(JsonConvert.SerializeObject(Model.Companies));
</script>