在MVC cs1660错误中绑定Telerik图表

时间:2012-09-06 10:45:18

标签: asp.net-mvc razor charts telerik telerik-mvc

我正在尝试将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))

谢谢!

1 个答案:

答案 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表达式选择的字段。