我是JSON的新手,我正在尝试将一些数据插入vis.js库。现在我有一个控制器:
public ActionResult Vis()
{
var data = _context.Primers.Select(p => new { id = p.Id, label = p.Code }).ToList();
JsonResult primers = new JsonResult() { Data = data };
ViewBag.Primers = Json(primers);
return View();
}
vis.js文档包含以下入门代码:
// create an array with nodes
var nodes = new vis.DataSet([
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
]);
所以我认为我只需要创建自己的var nodes
,将其放在那里就可以了。我在上面的EF Linq查询中创建对象时遇到了麻烦。我使用以下代码进行调试:
var primers = JSON.parse('@Html.Raw(Json.Encode(ViewBag.Primers))');
var visPrimers = new vis.DataSet(primers);
console.log(visPrimers);
但是我可以看到对象visPrimers是Length: 0
而data
属性是空的。我必须转到_options -> Data -> data
对象中的visPrimers
才能找到我的Linq查询返回的数组。
我不确定我这样做是对的。我知道vis.DataSet
可以获取Json数据,因为他们的文档是这样说的,但我不确定我需要从控制器格式化数据以使其格式与
[
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
]
vis.DataSet
函数需要。
我希望这是有道理的。任何和所有帮助表示赞赏!