簡體   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