我正在使用Google Maps API 开发.NET MVC 4
网络应用程序。
在这个项目中,我必须在地图上表示几个多边形。我提出的解决方案是在database
中创建两个表,一个具有每个多边形的标识符,另一个保存每个多边形每个角的纬度和经度。现在我必须将这些多边形加载到视图中的地图上。
我试图通过在ViewBag
中加载一个列表并在脚本中执行此操作来实现此目的,该脚本将代表地图中的多边形。我发送给ViewBag
的是List<List<string[]>>
。 &#34; main&#34;的每个成员list表示一个多边形,由多个标记(List<string[]>
)组成。在string[]
我保存每个标记的纬度,经度和描述。
我现在的问题是在Javascript
中查看此类列表。这甚至可能吗?或者是否有一个我没有考虑过的更顺畅的解决方案?
谢谢!
答案 0 :(得分:0)
您可以这样做:
<script>
var arr = '@YourList`;
arr .forEach(function(item) {
// whatevery you want here
});
</script>
答案 1 :(得分:0)
我要做的是将一个对象中的数据传递给您的视图,并在您的视图中使用@Html.Raw(Json.Encode(polygons))
。示例如下。
C#型号:
public class Polygon {
public string Name { get; set; } // name of polygon
public List<string> Markers { get; set; } // list of markers
}
MVC控制器:
List<Polygon> polygons = ...; // List of Polygons, retrieved from database
return View(polygons);
Razor查看:
@model List<Polygon>
<script>
var polygons = @Html.Raw(Json.Encode(Model)); // will render as var polygons = [ { Name: 'Polygon1', Markers: [ 'marker1', 'marker2' ] }, { Name: 'Polygon2', Markers: [...] } ];
// from @Kosmo's answer
polygons.forEach(function(polygon) {
console.log('Name is ' + polygon.Name);
console.log('Markers are ' + polygon.Markers.join(','));
});
</script>
你最终得到的是JSON格式的List,它是在Controller中创建它时传入的数据。
答案 2 :(得分:0)
是的,如果您将ViewBag值保存在javascript上的变量中,则已经可以。
你可以这样做:<script>
var myViewBagValue = '@ViewBag.NameOfViewBag';
//then you can iterate using one of all those ways that javascript provides
//every(), filter(), forEach(), map(), some() and etc.
</script>
这样,您的内容将始终存储在javascript值中,您可以毫无问题地进行操作。