我对 Javascript 比较陌生,虽然我知道如何使用它,但我并不真正理解它背后的机制。请耐心听我说。
我需要编写一个小应用程序,根据我以 XML 文件形式获取的数据创建图表(SVG 格式)。我发现PlotKit ,它完全符合我的需要,只不过它是用 Javascript 编写的,而我当前的程序是用 c# 编写的。我进行了一些谷歌搜索,发现了一些文章,解释了如何使用 .NET VsaEngine 类评估简单的 Javascript 代码。不幸的是,我完全不知道如何使用 VsaEngine 来执行需要引用其他文件的更复杂的 Javascript。基本上,我想要的只是 C# 能够将类似这样的内容作为 Javascript 调用:
var layout = new PlotKit.Layout("bar", {});
layout.addDataset("data", [[0, 0], [1, 1], [2, 2]]);
layout.evaluate();
var canvas = MochiKit.DOM.getElement("graph");
var plotter = new PlotKit.SVGRenderer(canvas, layout, {});
var svg = SVGRenderer.SVG();
并获取图表的 SVG 字符串。我不知道如何制作,以便上面的脚本知道在哪里寻找所有必要的对象。如果我要制作一个网页来执行此操作,我只需添加一些引用/plotkit/Layout.js、/plotkit/Canvas.js 等的脚本 header ,Javascript 就可以正常工作。
如果有人可以准确解释我如何通过 C# 使用 PlotKit,或者可以解释更有效的方法来做到这一点,我将非常感激。
编辑:我意识到我对这个问题不太清楚 - 我需要我的 C# 程序来模拟 Javascript 引擎并使用 PlotKit 库,而无需实际运行 Web 浏览器。有什么办法可以做到这一点吗?
最佳答案
PlotKit 是一个 JavaScript 库,旨在在客户端的 Web 浏览器中执行。 C#在服务器上执行。要在两者之间进行通信,您可以渲染希望传递到服务器上的 PlotKit 的任何数据,然后将其输出到发送到客户端的 HTML 中。
因此,在 C# 代码隐藏中,您将构造将传递给 PlotKit 的 addDataset 方法的 JSON 对象。
...
public partial class Default : System.Web.UI.Page
{
protected string PlotKitData = "[]";
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack) PlotKitData = GenerateJSON();
...
然后在您的 ASPX 代码前端中您将看到类似这样的内容。
<script>
var layout = new PlotKit.Layout("bar", {});
layout.addDataset("data", <%=PlotKitData%>);
layout.evaluate();
var canvas = MochiKit.DOM.getElement("graph");
var plotter = new PlotKit.SVGRenderer(canvas, layout, {});
var svg = SVGRenderer.SVG();
</script>
关于c# - 通过 C# 使用 PlotKit (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1172779/