0

我正在使用谷歌地图 api 在网页上显示位置。我已经使用静态位置来完成这项工作,如下面的 js 代码所示。我已将确切位置放入 sql 表中,而是希望通过使用表而不是硬编码位置来显示位置。基本上我想遍历我的 linq 结果并在 javascript 代码中显示它。所以 var locations = (我的结果集) 我知道我的代码离我很远,但认为它有助于展示我想要完成的事情。任何帮助,将不胜感激!谢谢

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(); 名称=地点。位置名称;coord1 = place.Coordinate1.Value; coord2 = place.Coordinate2.Value;

Javascript: var name2 = "<%=name%>"; var coord1 = "<%=coord1%>"; var coord2 = "<%=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 回答