我使用谷歌地图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 =(来自db.Coordinates中的p 其中p.LocationName ==“Adam” select p).FirstOrDefault(); name = place.LocationName; coord1 = place.Coordinate1.Value; coord2 = place.Coordinate2.Value;
使用Javascript: var name2 =“&lt;%= name%&gt;”; var coordinate1 =“&lt;%= coord1%&gt;”; var coordinate2 =“&lt;%= coord2%&gt;”;
答案 0 :(得分: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
以更动态的方式将脚本添加到页面中。