1

私はこのコードファイル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 をマッピングしました: 2 つの属性フロート (緯度、経度) が含まれており、その最後の値を知りたいです。

ファイル Index.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. しかし、メッセージは :3475064. なんで?そして、どうすれば修正できますか。

4

2 に答える 2

1

サーバーまたはアプリケーションが「en-US」以外のカルチャを使用している場合、問題は

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

ここでは、float 型で C# .ToString メソッドを暗黙的に使用し、それを javascript に渡します。ただし、C# はカルチャ情報を考慮し、javascript は en カルチャのみを扱います。

次のように、変換時にカルチャを明示的に設定する必要があります。

  @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
于 2012-09-15T12:03:15.600 に答える
0

使用してみてください(または「。」小数点区切り記号でカルチャを設定してください)

<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 メソッドを呼び出すと、実際には 4 つのパラメーターが渡されます。そのため、a = 34 および b = 75064 です。

サーバーからクライアントにパラメーターを渡すときは、文化を確認する必要があります。10 進数の区切り記号の場合、コードは期待どおりに機能しません。

マップの場合、小数値が必要なため、使用できません

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

このように小数を適切な文化に変換する必要があります

var culture = CultureInfo.GetCultureInfo("en-US");
...
<body  onload="initialize(@Model[0].ToString(culture), @Model[1].ToString(culture))">
于 2012-09-15T11:54:16.300 に答える