0

私はグーグルマップAPIを使用してウェブページに場所を表示しています。以下のjsコードに見られるように、静的な場所を使用してこれを機能させました。正確な場所をSQLテーブルに配置しましたが、ハードコードされた場所の代わりにテーブルを使用して場所を表示したいと思います。基本的に、linqの結果をループして、これをjavascriptコードで表示したいと思います。したがって、var location =(私の結果セット)私のコードはかなり遠いことはわかっていますが、それが私が達成しようとしていることを示すのに役立つと思いました。助けていただければ幸いです!ありがとう

protected void Page_Load(object sender, EventArgs e)
    {
        using (var db = new DataClasses1DataContext())
        {
            var place = (from p in db.Coordinates
                         select new {locName = p.LocationName, 
                             Coord1 = p.Coordinate1,  
                             Coord2 = p.Coordinate2}).ToList();

            //List<string> listPlaces = new List<string>();

            foreach (var result in place)
            {
                string name = place.locName;
                bool Coordinate1 = place.Coord1;
                bool Coordinate2 = place.Coord2;
            }
        }
    }

    <script type="text/javascript">
    var locations =
        ['Bondi Beach', -33.890542, 151.274856],
        ['Coogee Beach', -33.923036, 151.259052],
        ['Cronulla Beach', -34.028249, 151.157507],
        ['Manly Beach', -33.80010128657071, 151.28747820854187],
        ['Maroubra Beach', -33.950198, 151.259302]
    ];

編集:テーブルの最初のレコードで正しく機能するようにしましたが、最終結果はすべての行である必要があります。

C#:var place =(from p in db.Coordinates where p.LocationName == "Adam" select p).FirstOrDefault(); name = place.LocationName; coord1 = place.Coordinate1.Value; coord2 = place.Coordinate2.Value;

Javascript:var name2 = "<%= name%>"; var Coordinate1 = "<%= coord1%>"; var Coordinate2 = "<%= coord2%>";

4

1 に答える 1

1

いくつかのオプションがあります:文字列としてビルドする、オブジェクトでJsonSeralizerを使用する、メソッドをAJAXで呼び出してJSONを取得する、その他多数...

私にとって、文字列として構築することは、(この複雑さとサイズのオブジェクトの場合)単純で簡単な方法です。

aspxページ:

<script type="text/javascript">
var locations = <asp:literal id="locations" runat="server" />;
</script>

コード:

StringBuilder sb = new StringBuilder();
bool isFirst = true;
foreach (var result in place)
{
    if (!isFirst)
    {
        sb.Append(",");
    }
    isFirst = false;

    //Add the item data
    sb.AppendFormat("['{0}', {1}, {2}]", result.locName, result.Coord1, result.Coord2);
}
locations.Text = sb.ToString();

Page.ClientScript.RegisterClientScriptBlockより動的な方法でスクリプトをページに追加するために使用することもできます。

于 2012-12-12T20:16:50.453 に答える