【问题标题】:ASP.NET MVC w/ Newtonsoft passing objects from Controller to ViewASP.NET MVC w/Newtonsoft 将对象从控制器传递到视图
【发布时间】:2013-11-11 14:22:36
【问题描述】:

我正在尝试找到最简洁的方式将对象(记录集列表)从 MVC 4 控制器传递到视图作为 Json 对象。

控制器:

    var mem = BLL.Presenters.Account.GetAll().ToList();
    return View(mem);

查看:

<script type="text/javascript">
    // Load data from view 
    var globalData = @(Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)))
</script>

javascript 对象具有包含 JSON 的 globalData。

查看视图,我调用的是 Newtonsoft.Json.JsonConvert.SerializeObject,我宁愿在控制器中拥有它。

当我将 JsonConvert.SerializeObject 移动到控制器时:

   var mem = BLL.Presenters.Account.GetAll().ToList();
   var json = Newtonsoft.Json.JsonConvert.SerializeObject(mem);
   return View(json);

我收到错误:路径中有非法字符。

如何使用 Newtonsoft.Json 将 json 对象(已经序列化)从控制器传递到视图?

【问题讨论】:

  • 我想说你的第一种方法实际上很好而且更灵活,例如如果您曾经添加过更多数据。

标签: c# json asp.net-mvc-4 json.net


【解决方案1】:

编译器将您的 json(字符串)模型误解为视图名称,并调用了错误的 View 重载。如果你将模型转换为对象,你应该很高兴:

return View((object)json)

【讨论】:

    【解决方案2】:

    return View(json);实际上是调用方法View(string viewName)

    您需要将 json 放入 ViewData/ViewBag 或 ViewModel。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多