在嵌入式C#代码
问题描述:
获取JavaScript变量我试图写一个简单的在JS它使用的元素从C#代码中声明后面的列表。其实这里有一个问题:['i']
- 编译器不知道什么是i
。在嵌入式C#代码
如何我写这篇文章的正确?
for (var i = 0; i < '<%= poz.Count %>'; i++) {
var Latitude = '<%= poz['i'].Latitude %>';
}
答
您的计数器变量未在您的C#代码中定义。这是一个JavaScript变量。
如果你希望你的POZ对象的值,以提供给你需要将它们写出来,希望一些JavaScript结构C#编写的一个循环的JavaScript。
答
你们有没有这种倒挂。 C#必须将所有数据放入JavaScript页面的HTML页面中。除非您提供API,否则JS无法获取数据。
我建议在HTML产生的JavaScript(注意,这是不完美的C#)下面的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));
}
%>
}
答
你可以做这样的事情
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 }
};