【发布时间】:2019-03-26 08:56:00
【问题描述】:
我正在使用 GoJS 库来绘制图表。我正在尝试在页面上显示以下 JavaScript 代码(这是我在完成加载后需要看到的页面源代码):
myDiagram.model = new go.GraphLinksModel([
{ key: "Node26", color: "lightgreen"},
{ key: "Node25", color: "lightgreen"},
{ key: "Node33", color: "lightgreen"},
{ key: "Node42", color: "lightgreen"}],
[
{ from: "Node26, to: "Node25"},
{ from: "Node26, to: "Node33"},
{ from: "Node33, to: "Node42"},
{ from: "Node33, to: "Node41"},
{ from: "Node33, to: "Node57"},
{ from: "Node33, to: "Node25"},
{ from: "Node33, to: "Node34"}
]);
此代码是在服务器上使用 razor 语法生成的,如下所示:
@{
string nodes = "";
string links = "";
string childName;
foreach (Node node in Model.FullGraph)
{
nodes += "{ key: \"" + node.NodeName + "\"},";
@foreach (uint childId in node.ChildrenIds)
{
childName = Model.FullGraph.Find(x => x.NodeId == childId).NodeName;
links += "{ from: \"" + node.NodeName + "\", to: \"" + childName + "\"},";
}
}
}
myDiagram.model = new go.GraphLinksModel([@nodes], [@links]);
但是,在加载结果页面后,HTML 格式如下所示:
myDiagram.model = new go.GraphLinksModel([
{ key: "Node26", color: "lightgreen"},
{ key: "Node25", color: "lightgreen"},
{ key: "Node33", color: "lightgreen"},
{ key: "Node42", color: "lightgreen"}],
[
{ from: "Node26, to: "Node25"},
{ from: "Node26, to: "Node33"},
{ from: "Node33, to: "Node42"},
{ from: "Node33, to: "Node41"},
{ from: "Node33, to: "Node57"},
{ from: "Node33, to: "Node25"},
{ from: "Node33, to: "Node34"}
]);
用反斜杠转义不起作用,代码仍然用“替换双引号,因此不绘制图形。当我使用浏览器中的开发人员工具手动将它们替换回正常的双引号时,图形被绘制。
我也尝试使用@ 进行转义,也尝试使用Html.Raw()。没有任何效果。有人有什么建议吗?提前感谢您的帮助!
【问题讨论】:
-
这并不是真正的修复,更多的是一种解决方法。用 javascript 中的撇号替换所有引号......它们的价值相同,所以应该没问题。
-
您不必通过手动放置引号来创建对象字面量。使用
var array = @Html.Raw(Json.Serialize(Model.YourList))将列表转换为数组。然后在 javascript 中创建这两个数组 -
另外,
color在你的循环中在哪里? -
非常感谢!撇号破解完美!
标签: javascript c# asp.net-core razor