使用javascript循环来自c#数组的值

时间:2011-08-23 00:29:48

标签: c# javascript asp.net

好的,我在c#中创建了一个数组,想要在javascript for循环中访问这些值。这是我的全局c#变量:

protected int count;
protected string[] arr = new string[20];

从那里我将字符串值添加到数组中,比如说,Page_Load()事件。

这是我理想的javascript代码:

var count = <%= count %>;
for (var i = 0; i < count; i++) 
{
document.write(<%= arr[i] %>);
}

现在,如果我只是使用arr [0],它会弹出arr [0]的正确信息,所以我知道我的那部分是正确的,但有没有办法使用那个javascript变量“我“在&lt;%=%&gt;内标记

4 个答案:

答案 0 :(得分:5)

代码的ASP.NET部分在服务器上执行。 JavaScript在浏览器中执行。服务器只是将JavaScript视为文本,它没有意义且无法使用。只有当浏览器收到页面并解释JS时才会执行。

请记住,服务器和客户端PC是由网络连接的两个不同系统。如果要在系统B上处理来自系统A的数据,则需要将数据发送到B. / p>

如果您想将数组中的数据发送到浏览器以便在某些JavaScript中使用它,则需要serialize数组。

这样的事情:

var myArray = <% = new JavaScriptSerializer().Serialize(serverSideArray) %>;
for(var i = 0; i < myArray.length; i++) {
    document.write(myArray[i]);
}

答案 1 :(得分:3)

希望它对你有用...... 它在我的测试中运行良好

    <script language ="javascript">
        var count = <%= count %>;
        alert(count);

        <%
           for(int i=0;i<count;i++){
         %>
            document.write(<%= arr[i] %>);
        <%}%>

    </script>

答案 2 :(得分:0)

可悲的是,我不这么认为;因为Javascript是在浏览器的运行时评估的,但服务器块是在编译时在服务器上进行评估的。

你可以扩展服务器块的范围,只需在C#中循环arr

答案 3 :(得分:0)

我会为此受到抨击,但这里有:

服务器端:

protected void Page_Load(object sender, EventArgs e)
{
    string[] arr = new string[] { "1", "2", "3" };

    StringArr = string.Join(",", arr.Select(a => string.Format("\"{0}\"", a)).ToArray());
}

protected string StringArr;

客户端:

<script language="javascript" type="text/javascript">
    var arr = [<%=StringArr %>];

    alert(arr.length);
</script>

让嘲笑开始吧。