在javascript中循环C#列表

在javascript中循环C#列表,c#,javascript,.net,list,C#,Javascript,.net,List,我有这样一份清单: List<string> list = new List<string>(10); list.Add("Foo"); list.Add("Bar"); list.Add("Tord"); list.Add("Bob"); List List=新列表(10); 列表。添加(“Foo”); 列表。添加(“酒吧”); 列表。添加(“Tord”); 列表。添加(“Bob”); 如何使用JavaScript循环列表?如何在JavaScript中编写C#代码

我有这样一份清单:

List<string> list = new List<string>(10);

list.Add("Foo");
list.Add("Bar");
list.Add("Tord");
list.Add("Bob");
List List=新列表(10);
列表。添加(“Foo”);
列表。添加(“酒吧”);
列表。添加(“Tord”);
列表。添加(“Bob”);

如何使用JavaScript循环列表?如何在JavaScript中编写C#代码

您可以从codebehind中将列表作为javascript列表注入,或者如果您还想显示列表,您可以做一些简单的事情:

正面


代码隐藏

            List<String> list = new List<string>();
            list.Add("Hello");
            list.Add("How are you doing");
            list.Add("Fine and you?");

            showList.Text += "<ul id='jList'>";
            foreach(String val in list){
                showList.Text += "<li>" + val + "</li>";
            }
            showList.Text += "</ul>";
List List=新列表();
添加(“你好”);
列表。添加(“你好吗”);
添加(“好的,你呢?”);
showList.Text+=“”;
foreach(列表中的字符串val){
showList.Text+=“
  • ”+val+“
  • ”; } showList.Text+=“”;

    然后您可以通过GetElementByNode从javascript中访问“jList”。

    @tord:至少现在,您不能在javascript文件中使用C代码。您可能需要将列表转换为javascript能够理解的json等价物。您可以使用Response.Write from C#将json发送到客户端

    非常简单,您不能在javascript中编写C#-javascript是在客户端执行的脚本语言,而C#是在服务器上运行的编译代码

    如果您使用的是ASP.NET,则可以将javascript输出到页面,下面是一个非常简单的示例:

    void WebForm1_PreRender(object sender, EventArgs e)
    {
        if (!ClientScript.IsClientScriptBlockRegistered("MyScript"))
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("var myArray = new Array();");
            sb.AppendLine("myArray[0] = 'some value';");
            sb.AppendLine("myArray[1] = 'another value';");
            sb.AppendLine("myArray[2] = 'yet another value';");
    
            ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", sb.ToString(), true);
        }
    }
    
    然后,您可以在客户端上访问并迭代此javascript数组:

    <script language="javascript">
        //first do basic check that the array is available:
        if (typeof(myArray) != 'undefined' && myArray != null) {
            alert(myArray[0]);
        }
    </script>
    
    
    //首先执行基本检查,确保阵列可用:
    if(typeof(myArray)!=“未定义”&&myArray!=null){
    警报(myArray[0]);
    }
    
    从这里开始,获取预填充列表并创建javascript列表是一个简单的过程:

    void WebForm1_PreRender(object sender, EventArgs e)
    {
        List<string> list = new List<string>(new[] { "Foo", "Bar", "Tord", "Bob" });
    
        if (!ClientScript.IsClientScriptBlockRegistered("MyScript"))
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("var myArray = new Array();");
            for (int i = 0; i < list.Count; i++)
                sb.AppendLine(string.Format("myArray[{0}] = '{1}';", i, list[i]));
    
            ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", sb.ToString(), true);
        }
    }
    
    void WebForm1\u预渲染(对象发送方,事件参数e)
    {
    列表=新列表(新[]{“Foo”、“Bar”、“Tord”、“Bob”});
    如果(!ClientScript.IsClientScriptBlockRegistered(“MyScript”))
    {
    StringBuilder sb=新的StringBuilder();
    sb.AppendLine(“var myArray=new Array();”);
    for(int i=0;i
    您可以使用创建json数据的方法:

    public static string CreateJsonArray(List<string> list)
    {
        if (list.Count > 0)
        {
            StringBuilder sb = new StringBuilder();
            foreach (string item in list)
            {
                sb.AppendFormat("'{0}',", item);
            }
            sb.Remove(sb.Length - 1, 1);
            return String.Format("[{0}]", sb.ToString());
        }
        return "[]";            
    }
    
    公共静态字符串CreateJsonArray(列表)
    {
    如果(list.Count>0)
    {
    StringBuilder sb=新的StringBuilder();
    foreach(列表中的字符串项)
    {
    sb.附录格式(“{0}”,项目);
    }
    移除(sb长度-1,1);
    返回String.Format(“[{0}]”,sb.ToString());
    }
    返回“[]”;
    }
    
    然后将其分配给javascript脚本标记

    // C#
    List<string> list = new List<string>(10);
    
    list.Add("Foo");
    list.Add("Bar");
    list.Add("Tord");
    list.Add("Bob");
    
    ltrResult.Text = CreateJsonArray(list);
    
    // HTML
    <script type="text/javascript">
        var arr = <asp:Literal id="ltrResult" runat="server" />;
    </script>
    
    /C#
    列表=新列表(10);
    列表。添加(“Foo”);
    列表。添加(“酒吧”);
    列表。添加(“Tord”);
    列表。添加(“Bob”);
    ltrResult.Text=CreateJsonArray(列表);
    //HTML
    var-arr=;
    
    这是什么平台?我不确定你能不能在我熟悉的任何环境中混合和匹配这样的语言……好吧,首先,你到底为什么要在JavaScript中编写C代码?这是一个网络应用程序吗?如果您在服务器上使用C#,在浏览器中使用JavaScript,则需要首先从服务器向客户端获取数据,可能需要使用JSON。然后,您将拥有一个JSON数组,可以使用JavaScript对其进行循环。实际上,浏览器甚至无法看到该列表。
    // C#
    List<string> list = new List<string>(10);
    
    list.Add("Foo");
    list.Add("Bar");
    list.Add("Tord");
    list.Add("Bob");
    
    ltrResult.Text = CreateJsonArray(list);
    
    // HTML
    <script type="text/javascript">
        var arr = <asp:Literal id="ltrResult" runat="server" />;
    </script>