我对Javascript比较陌生,虽然我知道如何使用它,但我并不真正了解它背后的机制。请耐心听我说。
我需要写一个小的应用程序来创建一个图表(在SVG中),基于我作为XML文件接收的数据。我找到了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等的脚本头文件,Javascript就可以正常工作了。
如果有人能确切地解释我将如何通过C#使用PlotKit,或者能解释一种更有效的方法,我将不胜感激。
编辑:我意识到我不太清楚这个问题--我需要我的c#程序来模拟Javascript引擎并使用PlotKit库,而不需要实际运行web浏览器。有没有办法做到这一点?
发布于 2009-07-23 16:23:50
PlotKit是一个JavaScript库,用于在客户端的网络浏览器中执行。C#在服务器上执行。要在两者之间进行通信,您需要呈现希望传递给服务器上的PlotKit的任何数据,然后将其输出到发送给客户机的HTML语言中。
因此,在您的C#代码中,您将构造一个JSON对象,该对象将被传递给PlotKit的addDataset方法。
...
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 codefront中,你会有类似这样的东西。
<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>发布于 2009-07-23 18:07:44
也许ZedGraph可以满足你的需求呢?
https://stackoverflow.com/questions/1172779
复制相似问题