我正在尝试将Telerik图表绑定到IEnumerablge<MyModel>
部分内部视图
我的模特
public class MyModel
{
private string identifier;
private DateTime date;
private int visits;
}
部分视图
@model IEnumerable<MyModel>
@{
Html.Telerik().Chart(Model)
.Name("Visits")
.Legend(legend => legend.Visible(true).Position(ChartLegendPosition.Bottom))
.Series(series => {
series.Line("CurrentMonth").Name("Current Month")
.Markers(markers => markers.Type(ChartMarkerShape.Triangle));
series.Line("PrevMonth").Name("Previous Month")
.Markers(markers => markers.Type(ChartMarkerShape.Square));
})
.CategoryAxis(axis => axis.Categories(s => s.date))
.ValueAxis(axis=>axis.Numeric().Labels(labels=> labels.Format("{0:#,##0}")))
.Tooltip(tooltip => tooltip.Visible(true).Format("${0:#,##0}"))
.HtmlAttributes(new { style = "width: 600px; height: 400px;" });
}
获取以下错误:
CS1660: Cannot convert lambda expression to type 'System.Collections.IEnumerable' because it is not a delegate type
按以下代码行:
.CategoryAxis(axis => axis.Categories(s => s.date))
谢谢!
答案 0 :(得分:1)
代码存在多个问题。在代码中更改了各个部分后,我终于找到了以下工作正常:
@{
Html.Telerik().Chart(Model)
.Name("SampleChart")
.Tooltip(tooltip => tooltip.Visible(true).Format("${0:#,##0}"))
.Legend(legend => legend.Position(ChartLegendPosition.Bottom))
.Series(series =>
{
series.Line(s => s.visits).Name("Visits");
series.Line(s => s.hits).Name("Hits");
})
.CategoryAxis(axis => axis
.Categories(s => s.date)
)
.Render();
}
所以最后缺少Render()
。
series.Line("CurrentMonth")
中的参数也必须与myObject
中的字段名称匹配,或者通过lambda表达式选择的字段。