在嵌入式C#代码中获取JavaScript变量

时间:2012-01-30 22:15:34

标签: c# javascript asp.net

我正在尝试在JS中编写一个简单的 for ,它使用C#代码中声明的列表中的元素。实际上这里有一个问题:['i'] - 编译器不知道什么是i

我怎样才能正确地写这个?

for (var i = 0; i < '<%= poz.Count %>'; i++) {
    var Latitude = '<%= poz['i'].Latitude %>';
}

3 个答案:

答案 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 }
};