我做了这段代码 文件 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:它包含两个属性 float (纬度、经度),我想知道它的最后一个值。
文件索引.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.75064
和 longitude=10.761744
。但消息是:34
和 75064
。
为什么?我该如何纠正它。
最佳答案
如果您的服务器或应用程序使用“en-US”以外的文化,那么我相信问题与
onload="initialize(@Model[0],@Model[1])"
在这里,您隐式地在 float 类型上使用 C# .ToString 方法并将其传递给 javascript。但是,C# 考虑了文化信息,而 javascript 只处理文化信息。
您应该在转换中明确设置文化,例如:
@model IList<float>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Lay3.cshtml";
CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
string latitude = Model[0].ToString(culture);
string longitude = Model[1].ToString(culture);
}
<body onload="initialize(@latitude,@longitude)">
edit: GetCultureInfo
关于c# - JavaScript float 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437092/