0

グリッドを表示するコントローラーからモデルを返しています。正常に動作します。同じデータを使用して、Google マップ上にポイントを生成する必要もあります。プロトタイプに次のコードを設定しましたが、これを置き換える必要がありました。

            var locationsAll = [
                ["Pretty", 40.1508, -83.21],
                ["Little", 40.1308, -83.11],
                ["Smug", 40.001, -83.01],
                ["Troublemaker", 40.109, -83.291],
                ["Smallest", 40.08, -83.20]
                ];

            PlotpointsonMap(locationsAll);

ここまでは順調ですね。それはうまくいくので、これを次のようにjavascriptに変換しています:

                @{
                    var locations = "[";
                   foreach (var gmap in Model.MapPoints )
                   {
                       locations += "['" + gmap.EventStringData + "'," + gmap.Latitude + "," + gmap.Longitude + "],";
                   }

                    locations = locations.TrimEnd(',') + "]";

                }

            var myLocations = @locations;
            PlotpointsonMap(myLocations);

ただし、この半分は機能します。生成されたソースを表示すると、JavaScript ブロックに次のコードが表示されます。

var myLocations = [["update",40.080398,-83.139141] 

次のようにレンダリングする必要があります。

var myLocations = [["update",40.080398,-83.139141]

これを達成する方法についてのアイデアは大歓迎です。私は試した:

var myLocations = @Server.HtmlDecode(locations);

そして、それは私に同じ結果を与えました:(

4

1 に答える 1

0

うわー、いいえ!手動で JSON を操作しないでください。カンマ、引用符、トリム、括弧は使用しないでください。その心。

JSON パーサーを使用するだけです。

<script type="text/javascript">
    var locationsAll = @Html.Raw(Json.Encode(
        Model.MapPoints.Select(x => new object[] 
        { 
            x.EventStringData, x.Latitude, x.Longitude 
        })
    ));
    PlotpointsonMap(locationsAll);
</script>

MapPointsJSON パーサーは、これに含まれるデータに関係なく、常に適切にエンコードされることを保証します。

于 2012-07-02T16:21:26.073 に答える