繁体   English   中英

如何将数组从控制器传递给 javascript?

[英]How to pass array from controller to javascript?

我想将数组(二维)从控制器传递给 javascript 变量。 我使用会话通过,但这不起作用。 在 javascript 代码中,我是这样使用的:

 var data = '<%= Session["LatLon"] %>';

运行项目并使用检查元素时,数据中有:

在此处输入图片说明

如何通过? 我可以通过会话传递 2 个暗淡的数组吗?

将值插入Session["LatLon"] ,将其保存为 JSON 而不是 C# 字符串数组。

string[][] mystringarr = ...
Session["LatLon"] = JsonConvert.SerializeObject(mystringarr);

并在视图中使用

var data = <%= Session["LatLon"] %>;

所以它会产生类似的东西

var data = [["1.0", "1.4"], ["4.6","4.8"]];

使用 JSON.NET http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_JsonConvert_SerializeObject.htm

您当前观察到的是执行Session["LetLon"]对象的.ToString方法的结果。

您打算接收的是var data = [[1, 2], [3, 4]]; .

因此,您可以简单地编写二维数组的正确字符串化。 我建议编写简单的扩展方法:

public static string ToJsString(this string[,] array) {
     return Enumerable.Range(0, array.GetLength(0))
            .Aggregate(new StringBuilder(),
                (sbi, i) => sbi.AppendFormat(i == 0 ? "{0}" : ", {0}",
                    Enumerable.Range(0, array.GetLength(1))
                        .Aggregate(new StringBuilder(),
                            (sbj, j) => sbj.AppendFormat(j == 0 ? "{0}" : ", {0}", array[i,j]),
                            sbj => string.Format("[{0}]", sbj))), 
                sb => string.Format("[{0}]", sb));
}

为了使用它,然后写入var data = <%= ((string[,])Session["LatLon"]).ToJsString() %>

暂无
暂无

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

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