4

我正在寻找一种为现有 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。在给定任何 javascript 库的源代码(例如:jQuery、jQuery UI 等)的情况下,我正在寻找的应该能够创建这些简单的 C# 类。

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

4

2 回答 2

1

它只是您想要作为 JavaScript 对象的选项吗?如果它只是您想要的选项,那么在服务器上您可以使用以下方法将对象序列化为 JSON:

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

然后,当您在 Javascript 端收到此信息时,您可以将其转换为 JavaScript 对象,并将其用于您的图表选项,方法是:

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

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

于 2013-11-13T15:00:25.663 回答
0

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

于 2014-05-23T12:55:51.507 回答