2014-11-01 99 views
0

我使用ViewBag帮助将JSON传递到剃须刀视图页面。为什么我在尝试解析JavaScript中的JSON时遇到错误

这里是在动功能的代码:

public ActionResult GmailOAuthCallback(string code) 
    { 
     object contacts = GmailServiceWorkflow.GetContacts(code); 
     string json = new JavaScriptSerializer().Serialize(contacts); 
     ViewBag.name = json; 
     return View("SomeWindow"); 
    } 

当时我想解析JSON对象的Razor视图页面。

这是鉴于剃刀页面的代码:

function myFunction() { 
     var arrObject = JSON.parse("@ViewBag.name"); 
     alert(arrObject[0].firstName); 
     } 

但我得到这个错误:

语法错误:JSON.parse:预计属性名称或 '}' 在第1行的第3列JSON数据

任何想法,为什么我得到这个错误,以及如何解决它?

+0

错误达致这指出JSON数据是无效的。你的代码与此无关。 – vrijdenker 2014-11-01 22:45:42

回答

2

比使用JavaScriptSerializer相反,你CA通过收集传递给视图

public ActionResult GmailOAuthCallback(string code) 
{ 
    object contacts = GmailServiceWorkflow.GetContacts(code); 
    ViewBag.name = contacts ; 
    return View("SomeWindow"); 
} 

然后在脚本

function myFunction() { 
    var arrObject = JSON.parse('@Html.Raw(Json.Encode(ViewBag.name))'); 
    alert(arrObject[0].firstName); 
} 
+0

斯蒂芬感谢您的答案,但我得到红线(错误)在Json下。 – Michael 2014-11-01 23:16:45

+0

错误表示什么?你可能会在你的'web.config'文件中缺少'' – 2014-11-01 23:26:31

+0

@Michael这意味着你需要包含相关的命名空间,[System.Web.Helpers](http ://msdn.microsoft.com/en-us/library/system.web.helpers.json.encode%28v=vs.111%29.aspx),并添加一个using语句和/或添加System.Web 。帮助web.config(正如斯蒂芬所说)。 – 2014-11-01 23:27:22

相关问题