我正在尝试在JS中编写一个简单的 for ,它使用C#代码中声明的列表中的元素。实际上这里有一个问题:['i']
- 编译器不知道什么是i
。
我怎样才能正确地写这个?
for (var i = 0; i < '<%= poz.Count %>'; i++) {
var Latitude = '<%= poz['i'].Latitude %>';
}
答案 0 :(得分:2)
你的c#代码中没有定义你的计数器变量。这是一个javascript变量。
如果你想让你的poz对象的值可用于javascript,你需要将它们写成一些带有用c#编写的循环的javascript结构。
答案 1 :(得分:2)
你有这个颠倒了。 C#必须将所有数据放在HTML页面中以供JavaScript使用。除非您提供API,否则JS无法获取数据。
我建议使用以下C#伪代码在HTML中生成JavaScript(注意这不是完美的C#)。
function myJsFunction()
{
var jsLattitudes = {};
<%
int i;
for(i = 0; i < lattitudes.Length)
{
document.WriteLn(string.Format("jsLattitudes[{0}] = '{1}';\r\n", i, lattitues[i].Lattitude));
}
%>
}
答案 2 :(得分:0)
你可以做这样的事情
var locations = [ { <%= string.Join("},\n{",
locations.Select(l => string.Format("Longitude: {0}, Latitude: {1}",
l.Longitude.ToString(),
l.Latitude.ToString()))) %> } ]
for (var i = 0; i < locations.length; i++) {
var Longitude = locations[i].Longitude;
var Latitude = locations[i].Latitude;
}
这假设你有一个类
public class Location
{
public int Longitude { get; set; }
public int Latitude { get; set; }
}
和位置是IEnumerable可能是这样的
var locations = new List<Location> {
new Location { Longitude = 10, Latitude = 20 },
new Location { Longitude = 11, Latitude = 21 },
new Location { Longitude = 12, Latitude = 22 }
};