为Javascript库创建C#包装器

时间:2013-11-13 12:28:45

标签: c# javascript

我正在寻找一种为现有JavaScript库创建简单C#包装器的自动方法。我想在服务器上使用C#类创建一串JavaScript,然后将JavaScript发送到客户端。

实施例: 我正在使用KendoUI JavaScript库创建图表。我正在创建JavaScript以呈现图表服务器端,因为单个页面可以根据用户选择配置图表的方式呈现无限多个图表。

服务器端生成的JavaScript字符串如下所示(例如,大大简化):

function createChart() {
    $("#chart").kendoChart({
        title: {
            text: "Chart Title",                        
        },                   
        series: [{
            field: "Cost"
        }],                   
        categoryAxis: {
            field: "StartDate",
        }                    
    });
}

现在我的C#代码只是构建一个字符串来创建JavaScript字符串(例如大大简化):

private string CreateChartJS(string ChartTitle, string SeriesField, string CategoryField)
{
    return "function createChart() { $(\"#chart\").kendoChart({ title: { text: \""+ChartTitle+"\", },     series: [{ field: \""+SeriesField+"\" }], categoryAxis: { field: \""+CategoryField+"\", } }); } ";
}

我正在寻找的是某种类型的转换器/生成器工具,它可以从我正在使用的JavaScript库源代码中自动创建一个简单的C#包装器类。我很清楚Telerik已经为ASP.NET制作了一个包含自定义服务器端包装器的图表版本,这不是我想要的,因为我只是以KendoUI为例。 / p>

在Chrome网站开发者工具控制台中,我可以检查创建的KendoUI图表并查看其所有属性:

KendoChart in Chrome Console

我正在寻找的工具应该能够从上面屏幕截图中公开的属性中创建一个简单的C#类(在这种情况下,我想要配置的属性组是子项目'选项'对象)。

生成的C#类的示例(例如,大大简化):

public class KendoChartWrapper
{    
    public class options
    {
        public bool autoBind { get; set; }
        public class axisDefaults { }
        public class categoryAxies { }
        public class chartArea { }
        public class dataSource { }
        public class legend { }
        public string name { get; set; }
        public class navigator { }
        public class plotArea { }
        public string prefix { get; set; }
        public string renderAs { get; set; }
    }
}

这将允许我通过在C#中创建类的实例并序列化结果来创建我的图表JavaScript。我正在寻找的应该能够创建这些简单的C#类给定任何JavaScript库的源代码(例如:jQuery,jQuery UI等)。

我猜测已经存在可以做到这一点的现有工具,我只是不知道它叫什么。我希望有人能指出我正确的方向。

2 个答案:

答案 0 :(得分:1)

它只是您想要的JavaScript对象选项吗?如果它只是您想要的选项,那么您可以使用以下命令将对象序列化为JSON:

string json = Newtonsoft.Json.JsonConvert.Serialize(YourObject)

然后,当您在Javascript端收到此内容时,您可以将其转换为JavaScript对象,并使用它作为图表选项:

var options = JSON.parse(json);
$("#chart").kendoChart(options);

在现代浏览器上可用,您可以获得旧浏览器的后备支持

答案 1 :(得分:0)

我找到了我正在寻找的内容:http://jsonclassgenerator.codeplex.com/