Asp.net mvc MVC3给出了一个空白图表

Asp.net mvc MVC3给出了一个空白图表,asp.net-mvc,charts,Asp.net Mvc,Charts,我的LoggedUserHome。控制器对图表执行此操作 public ActionResult GetGender() { var AllGender = new List<string>(from c in db.tbl_Profile select c.sex).ToList(); var Groping = AllGender .GroupBy(i => i) .Select(i

我的LoggedUserHome。控制器对图表执行此操作

 public ActionResult GetGender()
    {


        var AllGender = new List<string>(from c in db.tbl_Profile select c.sex).ToList();
        var Groping = AllGender
           .GroupBy(i => i)
           .Select(i => new { sex = i.Key, CountGet = i.Count() }).ToArray(); //get a count for each

        var key = new Chart(width: 300, height: 300)
            .AddSeries(
            chartType: "pie",
            legend: "Gender Popularity",
            xValue: Groping, xField: "sex",
            yValues: Groping, yFields: "CountGet")
            .Write("gif");
        return null;

    }
public ActionResult GetGender()
{
var AllGender=新列表(从db.tbl_配置文件中的c选择c.sex).ToList();
var Groping=AllGender
.GroupBy(i=>i)
.Select(i=>new{sex=i.Key,CountGet=i.Count()}).ToArray();//获取每个
var键=新图表(宽度:300,高度:300)
.AddSeries(
图表类型:“馅饼”,
传奇:“性别流行”,
xValue:Groping,xField:“sex”,
Y值:摸索,Y字段:“CountGet”)
。写(“gif”);
返回null;
}
在我看来,我已经

<img src="/LoggedUserHome/GetGender"/>


感谢Nexuss ToArray()建议,我通过读取数据库来填充图表。。非常感谢Nexuzz

一个简单的解决方案是尝试替换您的

<img src="/LoggedUserHome/GetGender"/>

看着

@{
    var d = new PrimeTrekkerEntities1();
    var AllGender = new List<string>(from c in d.tbl_Profile select c.sex).ToList();
    var Groping = AllGender
        .GroupBy(i => i)
        .Select(i => new { sex = i.Key, Count = i.Count() }); //get a count for each

    var key = new Chart(width: 600, height: 400)
        .AddSeries(
        chartType: "pie",
        legend: "Gender Popularity",
        xValue: Groping, xField: "sex")
        .Write("gif");
}
@{
var d=新的PrimeTrekkerenties1();
var AllGender=新列表(从d.tbl_配置文件中的c选择c.sex).ToList();
var Groping=AllGender
.GroupBy(i=>i)
.Select(i=>new{sex=i.Key,Count=i.Count()});//获取每个
var键=新图表(宽度:600,高度:400)
.AddSeries(
图表类型:“馅饼”,
传奇:“性别流行”,
xValue:摸索,xField:“性”)
。写(“gif”);
}
“是的”在这种情况下你不需要采取行动

更复杂的解决办法是离开

<img src="/LoggedUserHome/GetGender"/>

在视图中,但使GetGender()操作返回图表图像URL。所以,在GetGender()中可以做的是以某种方式将图表呈现到图像文件中,并返回包含图像路径的响应

更新:

我对您的示例进行了一些更新,因此它会在图表中显示数据。以下是我得到的:

@{
    var AllGender = new List<string>() { "Male", "Female", "Male"};
    var Groping = AllGender
        .GroupBy(i => i)
        .Select(i => new { sex = i.Key, Count = i.Count() }).ToArray(); //get a count for each

    var key = new Chart(width: 600, height: 400)
        .AddSeries(
        chartType: "pie",
        legend: "Gender Popularity",
        xValue: Groping, xField: "sex",
        yValues: Groping, yFields: "count")
        .Write("gif");
}
@{
var AllGender=新列表(){“男性”、“女性”、“男性”};
var Groping=AllGender
.GroupBy(i=>i)
.Select(i=>new{sex=i.Key,Count=i.Count()}).ToArray();//获取每个
var键=新图表(宽度:600,高度:400)
.AddSeries(
图表类型:“馅饼”,
传奇:“性别流行”,
xValue:Groping,xField:“sex”,
Y值:摸索,Y字段:“计数”)
。写(“gif”);
}
您的示例有两个主要区别:

  • 摸索
    现在是一个数组。据我所知,查特希望能列举数据
  • 我添加了
    yvalue
    yFields
    参数,所以图表知道在Y轴上使用什么值

    • 简单的解决方法是尝试更换

      <img src="/LoggedUserHome/GetGender"/>
      
      
      
      看着

      @{
          var d = new PrimeTrekkerEntities1();
          var AllGender = new List<string>(from c in d.tbl_Profile select c.sex).ToList();
          var Groping = AllGender
              .GroupBy(i => i)
              .Select(i => new { sex = i.Key, Count = i.Count() }); //get a count for each
      
          var key = new Chart(width: 600, height: 400)
              .AddSeries(
              chartType: "pie",
              legend: "Gender Popularity",
              xValue: Groping, xField: "sex")
              .Write("gif");
      }
      
      @{
      var d=新的PrimeTrekkerenties1();
      var AllGender=新列表(从d.tbl_配置文件中的c选择c.sex).ToList();
      var Groping=AllGender
      .GroupBy(i=>i)
      .Select(i=>new{sex=i.Key,Count=i.Count()});//获取每个
      var键=新图表(宽度:600,高度:400)
      .AddSeries(
      图表类型:“馅饼”,
      传奇:“性别流行”,
      xValue:摸索,xField:“性”)
      。写(“gif”);
      }
      
      “是的”在这种情况下你不需要采取行动

      更复杂的解决办法是离开

      <img src="/LoggedUserHome/GetGender"/>
      
      
      
      在视图中,但使GetGender()操作返回图表图像URL。所以,在GetGender()中可以做的是以某种方式将图表呈现到图像文件中,并返回包含图像路径的响应

      更新:

      我对您的示例进行了一些更新,因此它会在图表中显示数据。以下是我得到的:

      @{
          var AllGender = new List<string>() { "Male", "Female", "Male"};
          var Groping = AllGender
              .GroupBy(i => i)
              .Select(i => new { sex = i.Key, Count = i.Count() }).ToArray(); //get a count for each
      
          var key = new Chart(width: 600, height: 400)
              .AddSeries(
              chartType: "pie",
              legend: "Gender Popularity",
              xValue: Groping, xField: "sex",
              yValues: Groping, yFields: "count")
              .Write("gif");
      }
      
      @{
      var AllGender=新列表(){“男性”、“女性”、“男性”};
      var Groping=AllGender
      .GroupBy(i=>i)
      .Select(i=>new{sex=i.Key,Count=i.Count()}).ToArray();//获取每个
      var键=新图表(宽度:600,高度:400)
      .AddSeries(
      图表类型:“馅饼”,
      传奇:“性别流行”,
      xValue:Groping,xField:“sex”,
      Y值:摸索,Y字段:“计数”)
      。写(“gif”);
      }
      
      您的示例有两个主要区别:

      • 摸索
        现在是一个数组。据我所知,查特希望能列举数据
      • 我添加了
        yvalue
        yFields
        参数,所以图表知道在Y轴上使用什么值

      您的操作不返回任何数据,但为空,因此图表不会显示在您的用户界面上。您的操作不返回任何数据,但为空,因此图表不会显示在您的用户界面上。非常感谢您的帮助。。但我还是被这个困住了。。如果你能给我推荐一篇非常简单的文章,它运行一个查询从数据库中获取数据,然后在图表中显示出来……对不起,我没有注意到你的评论。如果它仍然是真实的,那么看看那篇文章:看起来它已经具备了你所需要的一切。如果不是,我们可以尝试做一些特别的事情:)我已经试过很多次了。。但这是一个有点旧的版本教程,它也是为“显示数据在图表与ASP.NET网页”不是MVC。。。顺便说一下,谢谢你的帮助,没关系。链接上的所有示例都是使用Razor语法完成的。请查看我的最新答案-我添加了一个与您的问题很接近的示例。是的,这次它成功了。。。它需要改变一下。。我设法得到了我想要的。。非常感谢非常感谢你的帮助。。但我还是被这个困住了。。如果你能给我推荐一篇非常简单的文章,它运行一个查询从数据库中获取数据,然后在图表中显示出来……对不起,我没有注意到你的评论。如果它仍然是真实的,那么看看那篇文章:看起来它已经具备了你所需要的一切。如果不是,我们可以尝试做一些特别的事情:)我已经试过很多次了。。但这是一个有点旧的版本教程,它也是为“显示数据在图表与ASP.NET网页”不是MVC。。。顺便说一下,谢谢你的帮助没关系