我做了这段代码
文件Real.cs

public ActionResult Index() {
    IList<Eventdata> liste = DATA2.Eventdata.GetEventdata();
    int a = liste.Count;

    float lat = liste[a-2].Latitude;
    float longi = liste[a-2].Longitude;
    IList<float> model = new List<float>();
    model.Add(lat);
    model.Add(longi);
    return View(model);
}


我映射了表EventData:它包含两个属性浮点数(纬度,经度),我想知道其最后一个值。

文件索引.CShtml

@model IList<float> @{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Lay3.cshtml";
}

    <body  onload="initialize(@Model[0],@Model[1])">
    <div id="map_canvas" style="width: 800px; height: 500px;">
    </div>
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript">
    </script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
    </script>
    <script type="text/javascript">

    function initialize(a, b) {
        alert(a);
        alert(b);
        var myLatLng = new google.maps.LatLng(a,b);

        var myOptions = {
            zoom: 30,
            center: myLatLng,
            mapTypeId: google.maps.MapTypeId.TERRAIN
        };

        var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
        var flightPlanCoordinates = [
        new google.maps.LatLng(a,b)
        ];

        var flightmarker = new google.maps.Marker({
   position: new google.maps.LatLng(a,b),
  map: map, title: " denden"
        });
    }

    </script>
    </body>


我有最后一点:
Latitude=34.75064longitude=10.761744。但是消息是:3475064
 为什么?以及我该如何纠正。

最佳答案

尝试使用(或使用“。”十进制数字分隔符设置区域性)

<body  onload="initialize('@Model[0]','@Model[1]')"> // This will pass your value as
//two parameters(instead of four) but it can be used only as a string because
//javascript can parse decimal values only with '.' separator


代替

<body  onload="initialize(@Model[0],@Model[1])">


如果使用34,75064和10,761744调用initialize方法,则实际上是在传递四个参数。因此,a = 34,b = 75064。

在将参数从服务器传递到客户端时,您需要检查区域性,因为区域性具有','标记为'。对于十进制数字分隔符,您的代码将无法按预期工作。

在您使用map的情况下,您需要十进制值,因此您不能使用

<body  onload="initialize('@Model[0]','@Model[1]')">


您需要将小数转换为适当的文化,例如

var culture = CultureInfo.GetCultureInfo("en-US");
...
<body  onload="initialize(@Model[0].ToString(culture), @Model[1].ToString(culture))">

07-28 05:05