我的问题是layers.Add部分。我使用Map小部件对MVC,Razor,Linq和Telerik的KendoUI都是全新的。 layers.Add()函数获得一条带有“使用lambda表达式”消息的绿色波浪线。我为什么要这个?谢谢你的帮助。 link here
@(Html.Kendo().Map()
.Name("map")
.Center(39.6924, -97.3370)
.Zoom(4)
.Layers(layers =>
{
layers.Add()
.Style(style => style.Fill(fill => fill.Opacity(0.7)))
.Type(MapLayerType.Shape)
.DataSource(dataSource => dataSource
.GeoJson()
.Read(read => read.Url(Url.Content("~/Scripts/gz_2010_us_040_00_500k.js")))
);
})
.Events(events => events
.ShapeCreated("onShapeCreated")
.ShapeMouseEnter("onShapeMouseEnter")
.ShapeMouseLeave("onShapeMouseLeave")
)
)
答案 0 :(得分:1)
IDE只是建议您缩短lambda。假设F
是一些返回void的函数。然后以下两个是相同的:
x => { F(x); }
x => F(x)
因此,您可以通过替换此代码来缩短代码:
layers =>
{
layers.Add()
.Style(style => style.Fill(fill => fill.Opacity(0.7)))
.Type(MapLayerType.Shape)
.DataSource(dataSource => dataSource
.GeoJson()
.Read(read => read.Url(Url.Content("~/Scripts/gz_2010_us_040_00_500k.js")))
);
}
有了这个:
layers => layers.Add()
.Style(style => style.Fill(fill => fill.Opacity(0.7)))
.Type(MapLayerType.Shape)
.DataSource(dataSource => dataSource
.GeoJson()
.Read(read => read.Url(Url.Content("~/Scripts/gz_2010_us_040_00_500k.js")))
)
出于易读性原因,您可能希望或可能不想实际进行此更改。