javascript var 分配动态可为 null 的值显示脚本错误

javascript var assign a dynamic nullable value shows script error

我有一个 JSON 字符串从我的 asp.net mvc3 应用程序控制器使用 viewbag 键返回,如下所示,根据不同的情况,它也可以为空

{"Name":"TShirt","Id":"85","Gender":"M","Size":"Medium"}

我正在尝试将此 JSON 对象分配给我的本地匿名变量,如下所示:

    var data = '@ViewBag.UserData'; 

上面的 ViewBag 在初始页面加载时为 null,但作为标准中的用户键,我将其存储到会话变量中。每当用户选择产品并单击 back to previous page link 时,我都会从会话中恢复这些过滤器并将它们放在 Viewbag 中以便在视图上进一步处理。

当用户单击 back to previous page 时,这工作得很好,但我在初始加载时看到脚本错误,因为 var data = '@ViewBag.UserData'; 计算为 var data = ;

我也尝试了下面的方法,但仍然看到错误

var data = '@ViewBag.UserData' != '' ? @Html.Raw(@ViewBag.UserData): {};

我试过了

var data = '@ViewBag.UserData' != '' ? '@Html.Raw(@ViewBag.UserData)': {};

但我无法解析在 back to previous page 场景中得到的 data。我是不是做错了什么?

我不太清楚你真正想要的是什么。但据我了解,我认为您正在寻找 JSON 解析器。

var str = '{"one":"1","two":"2"}';
console.log(str); // Prints string
var obj = JSON.parse(str); //Converts string to JSON object
console.log(obj); // Prints JSON object

您可以尝试将 '' 替换为 null{} 。可能是代码有效。

var data = '@ViewBag.UserData' != **null or {}** ? '@Html.Raw(@ViewBag.UserData)': {};