【发布时间】:2020-03-13 21:13:34
【问题描述】:
我是 c# MVC 的新手,如果您能帮助我或至少给我一个关于如何解决这个问题的想法,我将不胜感激。 所以,我有这个方法可以过滤我的数据库中的一些信息并返回一个列表(System.Collections.Generic.List`1[Users.AspNetUser])。
private static AspNetUser PopulateModel(string country, [Optional]int Agefrom, [Optional] int Ageto)
{
using (DBEntities entities = DBEntities()) //using ADOnet DB
{
AspNetUser model = new AspNetUser()
{
WebUsers = (from c in entities.AspNetUsers
where c.Country == country || string.IsNullOrEmpty(country)
where c.AgeofUser >= Agefrom && c.AgeofUser <= Ageto || string.IsNullOrEmpty(Agefrom.ToString()) || string.IsNullOrEmpty(Ageto.ToString())
select c).ToList(),
Countries = (from c in entities.AspNetUsers
select new SelectListItem { Text = c.Country, Value = c.Country }).Distinct().ToList(),
Ages = (from c in entities.AspNetUsers
select c.AgeofUser)
};
return model;
}
}
之后,我尝试从过滤后的信息中显示图表,但 googlecharts 要求我提供数组或数据表来链接我的数据。我的问题是我找不到将该列表转换为 DT 或数组的方法。我会把脚本留给你以防万一。
<script>
google.charts.load('current', { 'packages': ['table'] });
google.charts.setOnLoadCallback(drawTable);
function drawTable() {
//here google asks for data in a DT or array with the method arraytotable()
var data = new google.visualization.DataTable(@Model.WebUsers);//here I get "Uncaught SyntaxError: Unexpected end of input" for the bad input
data.addColumn('string', 'Department');
data.addColumn('number', 'Revenues');
data.addRows(data1);
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, { showRowNumber: true, width: '100%', height: '100%' });
}
谢谢!
【问题讨论】:
-
看起来你需要序列化你的 Model.WebUsers。基本上,当您的视图被渲染时,会在 Model.WebUsers 上调用 .ToString() 方法,因此您的脚本看起来更像
...DataTable(System.List_SomeType),这当然会失败。您需要序列化数据JsonConvert.Serialize(Model.WebUsers),使其为json格式。
标签: c# asp.net-mvc linq charts google-visualization