我正在尝试将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>在DevTools中,我可以看到这是可行的:
var json1 = [{"Apple","Orange","Pear"},{"Sample1","Sample2","Sample3"}]但是如果我尝试console.log(json1),我被告知json1是未定义的。script标签恰好位于标签之前。将辅助表达式括在单引号中也无济于事:
var json1 = '@Json.Serialize(Viewbag.data)';我还被告知,Viewbag和Viewdata不应该用于将数据从模型传递到视图。为什么会这样呢?
发布于 2020-01-16 23:56:31
这条线
var json1 = [{"Apple","Orange","Pear"},["Sample1","Sample2","Sample3"]]无效:存在语法错误。(未捕获SyntaxError:意外的标记',')。
我猜你想要这样的东西
var json1 = [["Apple","Orange","Pear"],["Sample1","Sample2","Sample3"]]. 您的线路可能有问题
@Json.Serialize(Viewbag.data) 发布于 2020-01-17 11:30:49
在DevTools中看到这一点,我可以看到这是有效的:
var json1 ={“苹果”,“橙色”,“梨”},{"Sample1","Sample2","Sample3"}
你的json很奇怪,它应该像这样
[{"key1":"value1","key2":"value2"},{"key1":"value3","key2":"value4"}]。
我测试了你的代码,它在我的剃刀视图中运行良好:
@section Scripts {
<script>
$(document).ready(function () {
var json1 = @Json.Serialize(ViewBag.data);
console.log(json1);
});
</script>
}

https://stackoverflow.com/questions/59772203
复制相似问题