2016-12-01 40 views
0

我正在使用vectormap以此格式获取数据{“en “:”600“,”ru“:200,...} 我在控制器中检索数据,并创建一个VectorMapViewModel的列表并通过json结果传入视图并使用jquery获取该数据,但是我无法为矢量地图创建此格式。如何传递json数据,如{“en”:“600”,“ru”:200,...}以在asp.net中查看控制器mvc

public class VectorMapViewModel 
{ 
    public string CountryCode { get; set; } 
    public int CountryVisit { get; set; } 


} 

[HttpGet] 
    public JsonResult RequestVisitorsVectorMapData() 
    { 
     var countrydata =new List<VectorMapViewModel>(); 
     using (var db = new AppDbContext()) 
     { 

      var results = db.Countries; 
      countrydata.AddRange(results.Select(country => new VectorMapViewModel 
      { 
       CountryCode = country.CountryCode, 
       CountryVisit = country.ViewCount 
      })); 
      return Json(countrydata, JsonRequestBehavior.AllowGet); 
     } 
    } 

<script> 

    $(window).load(function() { 
     $.getJSON('/Home/RequestVisitorsVectorMapData/', function(data) { 


      $('#world-map').vectorMap({ 
       map: 'world_en', 
       backgroundColor: null, 
       borderColor: '#000', 
       borderOpacity: 0.25, 
       borderWidth: 0.5, 
       color: '#e7eaeb', 
       enableZoom: true, 
       hoverColor: '#16a085', 
       normalizeFunction: 'polynomial', 
       scaleColors: ['#C8EEFF', '#006491'], 
       selectedColor: '#000', 
       values: data 
      }); 
     }); 

    }); 
</script> 

回答

1

将您的数据字典:

[HttpGet] 
public JsonResult RequestVisitorsVectorMapData() 
{ 
    var countrydata = new List<VectorMapViewModel> 
    { 
        new VectorMapViewModel { CountryCode = "us", CountryVisit = 100}, 
        new VectorMapViewModel { CountryCode = "ru", CountryVisit = 200}, 
        new VectorMapViewModel { CountryCode = "ir", CountryVisit = 2000} 
    }; 

    var dictionary = new Dictionary<string, int>(); 
    foreach (var item in countrydata) 
    { 
        dictionary.Add(item.CountryCode, item.CountryVisit); 
    } 

    return Json(dictionary, JsonRequestBehavior.AllowGet); 
} 

这本词典将被序列化到:

{"us":100,"ru":200,"ir":2000} 
0

你可以这样做:

$(window).load(function() { 
    $.getJSON('/Home/RequestVisitorsVectorMapData/', function(data) { 
     var struct = {}; 
     for(var i = 0; i < data.length; i++){ 
      struct[data[i].CountryCode] = data[i].CountryVisit; 
     } 

     $('#world-map').vectorMap({ 
      map: 'world_en', 
      backgroundColor: null, 
      borderColor: '#000', 
      borderOpacity: 0.25, 
      borderWidth: 0.5, 
      color: '#e7eaeb', 
      enableZoom: true, 
      hoverColor: '#16a085', 
      normalizeFunction: 'polynomial', 
      scaleColors: ['#C8EEFF', '#006491'], 
      selectedColor: '#000', 
      values: struct 
     }); 
    }); 

}); 
+0

谢谢您的回答但结构返回数据像{en = 600},但我想{en:600} –

+0

代码会给你{en:600}。它正在做的就是用这些属性创建一个对象。 – Steve

相关问题