Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C中的asp.net MVC控制器向highcharts饼图发送JSON数据#_C#_Asp.net Mvc_Json_Highcharts_Pie Chart - Fatal编程技术网

C# 从C中的asp.net MVC控制器向highcharts饼图发送JSON数据#

C# 从C中的asp.net MVC控制器向highcharts饼图发送JSON数据#,c#,asp.net-mvc,json,highcharts,pie-chart,C#,Asp.net Mvc,Json,Highcharts,Pie Chart,我想用C#从我的asp.net MVC控制器发送json数据,并使用这些数据绘制highcharts饼图 所以现在我用这个: Dictionary<string, double> result = new Dictionary<string, double>(); result.Add("test1", 45); result.Add("test2", 64); var jsonResult = Json(new { graphDivId = "divGraph

我想用C#从我的asp.net MVC控制器发送json数据,并使用这些数据绘制highcharts饼图

所以现在我用这个:

Dictionary<string, double> result = new Dictionary<string, double>();
result.Add("test1", 45);
result.Add("test2", 64);

var jsonResult = Json(new
{
    graphDivId = "divGraph",
    legend = "A legend",
    stats = result ,
});

jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jsonResult;
但我需要这个:

stats:[["test1",45],["test2",64]]

有什么想法吗?

今天早上我在玩这个,我想出了下面的东西——但它不起作用,因为你会得到[{x:testx,y:60}…]。所以这不好。不过,您可能可以使用它并重写SimpleClass上的ToJSON方法

我的另一个想法(我不确定它是否有效)是收集ArrayList。由于ArrayList不是强类型,因此可以向其添加字符串和double属性

让我知道结果如何

如果使用简单对象列表会怎么样。您可能可以使用键值对或其他现有类。但是您可以创建一个简单的类来保存您的数据

   class SimpleClass{
       public int x{set; get;}
       public double y{set; get;}
   } 

    var results = new List<SimpleClass>();
    results.Add(new SimpleClass{x="test3", y=42});        
    results.Add(new SimpleClass{x="test2", y=99});
类SimpleClass{
公共整数x{set;get;}
公共双y{set;get;}
} 
var results=新列表();
添加(新的SimpleClass{x=“test3”,y=42});
添加(新的SimpleClass{x=“test2”,y=99});
完美的ek\u ny

多亏了你的帮助,我找到了在没有特定课程的情况下该如何做:

var results = new List<List<object>>();
results.Add(new List<object>(new object[]{"test1", 45}));
results.Add(new List<object>(new object[]{"test2", 99}));
var results=newlist();
添加(新列表(新对象[]{“test1”,45}));
添加(新列表(新对象[]{“test2”,99});

另一件很高兴知道的事

highcharts series.data是一个点对象,可以用C#表示:

参考:

ek_ny类是点对象表示的一部分。 事件和标记被注释,因为它是另一个要编写的类。它在那里的代表性是:

活动:

标记:

现在你可以这样使用它:

var results = new List<HighChartsPoint>();
results.Add(new HighChartsPoint {
          name="test3", 
          y=42, 
          color="red", 
          id="someid", 
          sliced=false 
        });

var jsonResult = Json(results);
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
return jsonResult;
public JsonNetResult MyAction()
{
    MyClass myObject = new MyClass();
    return JsonNet(myObject);
}
var results=newlist();
结果。添加(新的HighChartsPoint){
name=“test3”,
y=42,
color=“红色”,
id=“someid”,
切片=假
});
var jsonResult=Json(结果);
jsonResult.JsonRequestBehavior=JsonRequestBehavior.AllowGet;
返回jsonResult;

希望它能帮助……以防万一。如果值设置为null,Highcharts无法显示图表。 asp.net mvc Controller类的Json方法不能过滤空值

为此,您可以使用json.net库并创建一个JsonNetResult(继承自ActionResult):

然后将此方法添加到您的控制器以替换asp.net mvc的Json方法:

protected JsonNetResult JsonNet(object data, bool needDefaultSettings)
        {
            var result = new JsonNetResult();
            result.Data = data;

            if (needDefaultSettings)
            {
                var defaultSettings = new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore,
                    DefaultValueHandling = DefaultValueHandling.Ignore
                };
                result.SerializerSettings = defaultSettings;
            }

            return result;
        }
因此,现在您可以在控制器操作中使用它,如下所示:

var results = new List<HighChartsPoint>();
results.Add(new HighChartsPoint {
          name="test3", 
          y=42, 
          color="red", 
          id="someid", 
          sliced=false 
        });

var jsonResult = Json(results);
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
return jsonResult;
public JsonNetResult MyAction()
{
    MyClass myObject = new MyClass();
    return JsonNet(myObject);
}
还有一件事,请不要犹豫,在MyClass属性上使用Json.Net DefaultValue属性:

[DefaultValue(null)]

是的,非常感谢。它几乎起作用了!但我需要第二个元素的整数。谢谢@dragouf很高兴我能帮上忙。你做这件事的方式太完美了!我学到了一些新东西!
[DefaultValue(null)]