ASP.NET MVC w / Newtonsoft将对象从Controller传递到View

时间:2013-11-11 14:22:36

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

我试图找到最干净的方法将一个对象(记录集列表)从MVC 4 Controller传递给View作为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对象的globalData包含JSON。

查看View,我正在调用Newtonsoft.Json.JsonConvert.SerializeObject,我宁愿在Controller中使用它。

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

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

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

如何使用Newtonsoft.Json将一个json对象(已经是Serialize)从Controller传递给View?

2 个答案:

答案 0 :(得分:4)

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

return View((object)json)

答案 1 :(得分:1)

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

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