ASP.Net核心javascript变量在控制台中不可访问

ASP.Net核心javascript变量在控制台中不可访问,javascript,asp.net-core,Javascript,Asp.net Core,我正在尝试将d3.js图表添加到我的web应用程序中。使用新的JSON序列化程序,我将查询结果返回到视图: public IActionResult QuotationTracker() { var query = (from p in _context.vQuotationTracker orderby p.quote select p) .ToList(); ViewBag.data = query; return View(que

我正在尝试将d3.js图表添加到我的web应用程序中。使用新的JSON序列化程序,我将查询结果返回到视图:

public IActionResult QuotationTracker()
{
    var query =
    (from p in _context.vQuotationTracker
    orderby p.quote
    select p)
    .ToList();

    ViewBag.data = query;

    return View(query);
}
此字符串存储在Viewbag.data中,并传递到javascript变量json1中:

<script>
    var json1 = @Json.Serialize(Viewbag.data);
</script>
但是如果我尝试
console.log(json1)
,我会被告知json1是未定义的。脚本标记位于标记的正前方。将助手表达式括在单引号中也无济于事:

var json1 = '@Json.Serialize(Viewbag.data)';
我还被告知不应使用Viewbag和Viewdata将数据从模型传递到视图。为什么会这样?

这条线

var json1 = [{"Apple","Orange","Pear"},["Sample1","Sample2","Sample3"]]
无效:存在语法错误。(未捕获的语法错误:意外标记“,”)

我猜你想要这样的东西

var json1 = [["Apple","Orange","Pear"],["Sample1","Sample2","Sample3"]]. 
你的线路可能有问题

 @Json.Serialize(Viewbag.data) 
在DevTools中查看这一点,我可以看出这是有效的:

var json1=[{“苹果”、“橙色”、“梨”}、{“样本1”、“样本2”、“样本3”}]

您的json很奇怪,它应该是

[{“key1”:“value1”,“key2”:“value2”},{“key1”:“value3”,“key2”:“value4”}]

我测试了您的代码,并且在我的razor视图中运行良好:

@section Scripts {
<script>
   
    $(document).ready(function () {
        var json1 = @Json.Serialize(ViewBag.data);
        console.log(json1);
    });        
    
</script>

}
@节脚本{
$(文档).ready(函数(){
var json1=@Json.Serialize(ViewBag.data);
console.log(json1);
});        
}

您是否尝试过
window.json1=…
?不过应该是一样的。你没有注意到控制台中的语法错误吗?
@section Scripts {
<script>
   
    $(document).ready(function () {
        var json1 = @Json.Serialize(ViewBag.data);
        console.log(json1);
    });        
    
</script>

}