【发布时间】:2015-06-16 16:01:06
【问题描述】:
我有一个@Model.LoginCoordinates,其中LoginCoordinates 是ICollection<Coordinates>。
Coordinates 类:
public class Coordinates {
public int Id { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
}
在我的视图中:
<script>
function f(){
for (var i = 0, n = @Model.LoginCoordinates.Count; i < n; i++) {
alert(i);//works fine, I just wanted to check if the loop works at all
}
}
</script>
它工作正常,但我想显示所有的做:
<script>
function f(){
for (var i = 0, n = @Model.LoginCoordinates.Count; i < n; i++) {
var latitute = @Model.LoginCoordinates[i].Latitude;
var longituted = @Model.LoginCoordinates[i].Longitude;
}
}
</script>
但我无法访问LoginCoordinates 的i 元素,因为它是ICollection。我也相信 foreach 是不可能的,因为它是 c# 对象。
问题:如何在JavaScript 中迭代ICollection?
编辑
上面这个是SSCCE,真正的代码是;
var map;
function InitializeMap() {
alert('works');
var lat = @Model.LoginCoordinates.First().Latitude;
var lon = @Model.LoginCoordinates.First().Longitude;
var latlng = new google.maps.LatLng(lat, lon);
var mapOptions =
{
zoom: 16,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true
};
map = new google.maps.Map(document.getElementById("map"), mapOptions); //this breaks the script
}
window.addEventListener('load', InitializeMap);
【问题讨论】:
-
请问您需要如何处理这些没有javascript 无法在视图中完成的数据?
-
@area28 我想在谷歌地图上显示这个集合中的所有坐标。所以我想迭代它并为该循环内的每个纬度和经度对创建标记。
-
我曾尝试在 dotnetfiddle 中使用类似的数据集,但无法使其正常工作。一种解决方法是将坐标放在 DOM 上的某个位置并使用 javascript 访问它们。
-
@area28 请看看我的编辑。在将这个
ICollection转换为 foreach 循环内的String[]之后,也许有可能将字符串数组传递给 java 脚本。
标签: javascript .net asp.net-mvc razor icollection