我知道有很多关于如何做到这一点的很好的例子,但我似乎无法将从C#到javascript的对象数组传递给工作。我认为我非常接近,因为客户端的阵列正在接收一些东西,当我发送12件东西时,它打印出来:
"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
正如你所看到的那样,有些对象,甚至有12个对象,这意味着它正在被发送(至少相对)正确并存储。我只是不确定如何将字符串解析为对象并将它们存储在数组。下面的代码是我如何得到上面的长串对象。阅读其他示例我尝试首先使用JSON解析字符串,但我无法正确解决问题。实施例
var data;
var nodeEdges = JSON.parse(data);
以下是我正在使用的代码,它为我提供了很长的' [object Object]'。这是我发送的地方:
protected void VisualizeBtn_Click(object sender, EventArgs e)
{
List<Connection> Connections = new List<Connection>();
var x = from b in db.Connections where (b.VirusId == virusId) select b;
Connections = x.ToList();
var json = JsonConvert.SerializeObject(Connections.ToList());
ClientScript.RegisterArrayDeclaration("nodeEdges", json);
ScriptManager.RegisterStartupScript(this.Page,Page.GetType(), "id","visualize('#visrep')", true);
}
这是我收到它的JS(我正在使用D3.js)。
var nodeEdges = [];
function visualize(element) {
d3.select(element).selectAll("h2").data(nodeEdges).enter().append("h2").text(function (d) { return "We did it: " + d});
}
可能不需要它,但这是我试图发送的对象
public class Connection
{
[Key]
public int ConnectionId { get; set; }
public int source { get; set; }
public int destination { get; set; }
public bool direct { get; set; }
public string VirusId { get; set; }
public Connection(int source_, int destination_, bool direct_, string virusId)
{
source = source_;
destination = destination_;
direct = direct_;
VirusId = virusId;
}
public Connection()
{
}
}
修改
我已将问题分解为一个更简单的例子。我的新C#
protected void btnTest_Click(object sender, EventArgs e)
{
string json = JsonConvert.SerializeObject(new testClass(66, 77));
ClientScript.RegisterArrayDeclaration("data", json);
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "id", "testFunc()", true);
}
我的新javascript
var data;
function testFunc() {
d3.select("#stuff").append("h2").text(data);
}
序列化字符串未被接收到&#39;数据&#39;变种。当我逐步完成C#时,序列化的字符串就在那里并且看起来不错但它并没有出现在JS中
我的&#39; testClass&#39;对于那些科学家来说
public class testClass
{
public int target { get; set; }
public int source { get; set; }
public testClass(int t, int s)
{
target = t;
source = s;
}
public testClass()
{
}
}
答案 0 :(得分:0)
关于上面编辑中的简化问题,解决方案非常明显。我所要做的就是将JS函数更改为下面的代码,我可以访问该数组。真正明确的定义。
var data;
function testFunc() {
d3.select("#stuff").append("h2").text(data[0].source);
}