我在C#中有个数组a[0]到a[7],值是
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7
我想在前台页面的JS中通过for语句的值来获取这个数组,好像不能用,前台代码如下,不能用
function re_pic(va_max)//这里JS要根据参数不同取C#中不同数组内容
{
    max="<%=a[va_max]%>";//这样取不行
     max="<%=a["+va_max+"]%>";//这样取也不行
    max="<\%=a["+va_max+"]\%>";//这样取好像也不行
}
谁以帮我实现这功能不要告诉我这样实现,我会骂人的哦
{
switch(va_max)
    {
case 0:max="<%=a[0]%>";break;
case 1:max="<%=a[1]%>";break;
case 2:max="<%=a[2]%>";break;
case 3:max="<%=a[3]%>";break;
case 4:max="<%=a[4]%>";break;
case 5:max="<%=a[5]%>";break;
case 6:max="<%=a[6]%>";break;
case 7:max="<%=a[7]%>";break;
    }
}

解决方案 »

  1.   

     protected string[] a = new string[8];
            protected void Page_Load(object sender, EventArgs e)
            {
                for (int i = 0; i < 8; i++)
                {
                    a[i] = i.ToString();
                }
            }    <script>
        function aa(va_max){
        var max;
        switch(va_max) 
        { 
    case 0:max="<%=a[0]%>";break; 
    case 1:max="<%=a[1]%>";break; 
    case 2:max="<%=a[2]%>";break; 
    case 3:max="<%=a[3]%>";break; 
    case 4:max="<%=a[4]%>";break; 
    case 5:max="<%=a[5]%>";break; 
    case 6:max="<%=a[6]%>";break; 
    case 7:max="<%=a[7]%>";break; 
        } 
        return max;
    }
    alert(aa(1));
        </script>
      

  2.   

    数组a要加上protected 或Public
      

  3.   

    1楼的等于没回答我的问题,那种方法我会,我想知道我第一种写法的正确格式,不用判断,直接根据参数赋值
    2楼说的我也知道
    这三种方法的正确形式是什么
    max=" <%=a[va_max]%>";//这样取不行 
    max=" <%=a["+va_max+"]%>";//这样取也不行 
    max=" <\%=a["+va_max+"]\%>";//这样取好像也不行 
      

  4.   

    max=" <%=a[va_max]%>" 等等调用是不可能的,js里的变量,不可能参加后台运算的。除非ajax,但是那样比switch更麻烦。
      

  5.   

    cs: protected int va_max = 1;
    aspx:alert("<%=a[va_max] %>");这样就可以执行,因为<%= %>是在服务器端执行的,va_max是客户端变量的话,根本没有办法沟通的。
    即使你使用拼凑的方法max="  <%=a["+va_max+"]%>"; 但是要知道这段代码是在<%= %>里面 va_max必须是cs里的变量才可以。
      

  6.   

    4楼的答案我满意,对吗!如果不能实现就告诉我不能实现,那我就只能用swicth方法作了
      

  7.   

    我正在努力用5楼的方法试,好用是好用,不过在JS里怎么能改变CS中va_max的值那??
      

  8.   

    不行,肯定取不到。
    function re_pic(va_max)//这里JS要根据参数不同取C#中不同数组内容 

        max=" <%=a[va_max]%>";//这样取不行 
         max=" <%=a["+va_max+"]%>";//这样取也不行 
        max=" <\%=a["+va_max+"]\%>";//这样取好像也不行 
    } 你的va_max变量是JS变量 对C#后台代码无用。你只能在一开始就把C#数组中的值想类似的办法赋值给JS数组。
    C# code
    protected string a = "1,2,3,4,5,6";JS code
    比如:var a = {<%=a%>};(代码如果有错误。请自己修改下哈。嘿嘿)这样JS就有个数组a了
    然后在用JS循环就OK。
      

  9.   

    楼主的思维存在问题。<%=a[va_max]%>这是运行在服务器的。
    而你的JS在客户端的。也就是说va_max这个变量是客户端的变量。在服务器是不存在的。所以你写<%=a[va_max]%>动行是会出错的。因为不存在va_max这个变量。后面那两个写法也同样是错误的。
    如果你想要把va_max这个客户端变量传到服务器去,要么你就提交页面,要么你就用AJAX。还有楼主所说的:

    switch(va_max) 
        { 
    case 0:max=" <%=a[0]%>";break; 
    case 1:max=" <%=a[1]%>";break; 
    case 2:max=" <%=a[2]%>";break; 
    case 3:max=" <%=a[3]%>";break; 
    case 4:max=" <%=a[4]%>";break; 
    case 5:max=" <%=a[5]%>";break; 
    case 6:max=" <%=a[6]%>";break; 
    case 7:max=" <%=a[7]%>";break; 
        } 
    }
    这个不知你是说哪里不行?是泄露代码了还是那个数组是动态的(不一定是8个),如果你是怕泄露代码,那你就只能用AJAX来实现。如果你的数组有可能不是8个,这我倒是有个方法,那就是在服务器端把 js中的re_pic()这个函数用Response.Write()输出。
      

  10.   

    public 变量或 protected的
    才能这样用