繁体   English   中英

如何将数据从 arraylist 传输到 JS arraylist (C# webform)

[英]How to transfer the data from arraylist to JS arraylist (C# webform)

<body>

    <script>
        var jslist = [];
        function updateList() {
            var arlist1 = <%=arlist1%>;  
            jslist = arlist1;
            document.getElementById("demo").innerHTML = jslist;
        }
        window.onload = updateList;
    </script>

    
    <form id="form1" runat="server">
        <p id="demo"></p>
    </form>

</body>



    public partial class JSPassData : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ArrayList arlist1 = new ArrayList()
            {
                1,
                "Bill",
                300,
                4.5f
            };

            var serializer = new JavaScriptSerializer();
            var json = serializer.Serialize(arlist1);

            Page.ClientScript.RegisterArrayDeclaration("arlist1", json);
        }
    }

继续显示有关 The name 'arlist1' does not exist in the current context (But I have already defined) 的消息

为什么我无法将arraylist 的内容传输到JS?

好吧,据我所知,它确实有效!

但是,话又说回来,.net ArrayList 很旧,与 JavaScript 的关系为零。

如果将 .net ArrayList 转换为序列化的 ojbect,则会得到:

<script type="text/javascript">
    //<![CDATA[
   var arlist1 =  new Array([1,"Bill",300,4.5]);
    //]]>
</script>

所以,请注意为什么要在其中放置 // 注释。

但看起来非常接近!!!

我们有这个:

   var arlist1 =  new Array([1,"Bill",300,4.5]);

这意味着我们有一个数组,元素 0 作为一个数组!!!

所以,让我们把这段代码放在我们的页面上:

        <asp:Button ID="Button1" runat="server" Text="Create the array" OnClick="Button1_Click" />
        <br />
        <asp:Button ID="cmdShow" runat="server" Text="Show Array"
            OnClientClick="showvalues();return false" />

        <script>
            function showvalues() {
                myOut = $('#OutPutArea')
                s = "array count size = "
                s += arlist1[0].length + "<br/>"
                // display all the elements
                s += "============<br/>"
                for (i = 0; i < arlist1[0].length; i++) {
                    s += arlist1[0][i] + "<br/>"
                }
                myOut.html(s)
            }
        </script>
        
        <br />
        <div id="OutPutArea">
        </div>

背后的代码是这样的:

    protected void Button1_Click(object sender, EventArgs e)
    {
        ArrayList myList = new ArrayList()
        {
            1,
            "Bill",
            300,
            4.5f
        };

        var serializer = new JavaScriptSerializer();
        var json = serializer.Serialize(myList);
        Page.ClientScript.RegisterArrayDeclaration("arlist1", json);
    }

因此,我们将单击第一个按钮(生成数组 - 服务器端代码)。

然后我们将单击运行客户端代码的按钮 2 (cmdShow),因此我们看到/得到:

在此处输入图像描述

所以,你所拥有的似乎工作得很好。 但是,如前所述,使用 ListArray 实际上会序列化为一个元素的 js 数组,而那个元素(第一个元素 [0])只是一个数组。

我的意思是,您可以将数组的每个元素作为一个数组(数组的数组在这里是完全合法的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM