c# - 通过 C# 使用 PlotKit (javascript)

标签 c# javascript

我对 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/

相关文章:

c# - '<name>' 中的未知列 'where clause'

C# - MVVM 中的第二个选项卡项中不显示弹出窗口

c# - 我如何判断打印机是否会打印到文件?

javascript - wix/react-native-navigation V2 | wix/react-native-navigation V2 |在第二个屏幕中设置根底部选项卡

javascript - 如何使用 XPath 选择链接的内部文本?

c# - 使用 Microsoft.Office.Interop.Excel 读取所有行和列

c# - 在 C# 中从 int 中获取单独的数字

javascript - Sencha CMD 生成特定版本的应用程序

javascript - 未捕获的语法错误 : Unexpected token u with Ajax post

javascript - href 内的输出变量 - Javascript