繁体   English   中英

为Javascript库创建C#包装器

[英]Create C# Wrapper for Javascript Library

我正在寻找一种自动化的方法来为现有的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作为示例。

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

Chrome控制台中的KendoChart

我正在寻找的工具应该能够在上面的屏幕截图中公开的属性中创建一个简单的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等)。

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

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

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

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

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

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

我找到了我正在寻找的东西: http//jsonclassgenerator.codeplex.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM