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:
在你的控制器中:
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>