从控制器传递c#值以查看javascript

时间:2018-03-25 02:23:36

标签: c# asp.net asp.net-mvc

所以我试图将控制器列表中的纬度和经度值传递给查看脚本(谷歌地图)。此代码的目的是根据控制器的纬度和经度列表在谷歌地图上创建多个标记。

如何实际从控制器传递列表以查看谷歌地图的脚本?

以下是我的一些代码:

index.cshtml

<script> 
@foreach (float list in ViewBag.latitude_list){
@foreach (float list2 in ViewBag.longitude_list){
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(@list, @list2),
            map: map,
            title: 'Hello World!'
        });
    }
}
</script>

controller.cs

//add latitude and longitude to list                        
latitude_list.Add(entity.vehicle.position.latitude);
longitude_list.Add(entity.vehicle.position.longitude);

ViewData["latitude_list"] = latitude_list;
ViewData["longitude_list"] = longitude_list;
return View();

我仍然很陌生,任何帮助都将不胜感激。

更新

这是我用C#值填充javascript google map lat和lng的方法。 有模特,

homecontroller.cs

latLngList.Add(new LatLng() {Lat = entity.vehicle.position.latitude, Lng = entity.vehicle.position.longitude})

index.cshtml

<script>
var markersArray = [];

    @foreach (var item in ViewBag.latLngList){
       <text>
             markersArray.push(new google.maps.Marker({
                 draggable: true,
                 position: new google.maps.LatLng('@item.Lat', '@item.Lng', false),
                 title: 'Whatever title',
                 map: map
             }));
        </text>
    }
</script>

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,答案就是:

  • 您可以创建一个包含两个属性Lat和Lng的模型。
  • 然后您创建一个要传递给视图的位置列表。
  • 我认为代码应该是这样的。
  

LatLng.cs

public class LatLng
{
public float Lat {get;set;}
public float Lng {get;set;
}
  

controller.cs

//add latitude and longitude to list
public class Controller
{
List<LatLng> latLngList = new List<LatLng>();
latLngList.Add(new {entity.vehicle.position.latitude, 
entity.vehicle.position.longitude} );
ViewData["latLng_List"] = latLngList;
return View();
}
  

index.cshtml

<script> 
@foreach (var item in ViewData["latLng_List"] as IList<>){
   var marker = new google.maps.Marker({
   position: new google.maps.LatLng(item.Lat, item.Lng),
   map: map,
   title: 'Hello World!'
   });
}
</script>
  • 有很多方法可以做到这一点,但我相对于你的回答。
相关问题