我正在尝试获取多维 int[][]
的值JavaScript 上的数组。
该数组在 Controller 类中初始化,并通过名为 hdn_l_asuetos
的隐藏输入元素中的 View 类传递给 JS。 .
问题是我需要迭代 int[][]
数组到 de JavaScript 文件中,但我不能。
这是我的 JS 代码:
var natDays = $('#hdn_l_asuetos').val();
function nationalDays(date, inMonth) {
if (inMonth) {
for (i = 0; i < natDays.length; i++) {
alert("MES " + natDays[i][0]);
alert("DIA " + natDays[i][1]);
if (date.getMonth() + 1 == natDays[i][0] &&
date.getDate() == natDays[i][1]) {
return {selectable: false};
}
}
}
return {};
}
我得到这个结果:
MES S
DIA undefined
MES y
DIA undefined
MES s
DIA undefined
MES t
DIA undefined
MES e
DIA undefined
MES m
DIA undefined
MES .
DIA undefined
MES I
DIA undefined
MES n
DIA undefined
MES t
DIA undefined
MES 3
DIA undefined
MES 2
DIA undefined
MES [
DIA undefined
MES ]
DIA undefined
MES [
DIA undefined
MES ]
DIA undefined
由此我可以看到 var natDays = $('#hdn_l_asuetos').val();
返回类型 hdn_l_asuetos
, System.Int32[][] 位于位置 0。
如果您能帮助我迭代int[][]
,我将不胜感激。大批。
提前致谢。
最佳答案
您正在以正确的方式访问多维数组元素
arr[i][j]
但是当你这样做时
var natDays = $('#hdn_l_asuetos').val();
您得到的字符串为 natDays
我认为您是在服务器端执行此操作的:
System.Int32[][] myArr = ....
and in razor view
... @myArr
有效执行
myArr.ToString()
并且您在输入控件中收到了“System.Int32[][]”
值
您应该做的是在服务器端对数组进行 JSON 序列化,然后在客户端对其进行反序列化
//in view
@Html.Raw(Json.Encode(myArr))
//js
var natDaysJson = $('#hdn_l_asuetos').val();
var natDays = JSON.parse(natDaysJson)
那么剩下的所有代码将保持不变
或者,如果这段 javascript 位于 razor View 中,您可以直接将数组分配给变量
var natDays = @Html.Raw(Json.Encode(myArr))
这样,当渲染 View 时,您将拥有数组作为对象文字:
var natDays = [ [ 1,2,3] , [4,5,6]... ]
关于JavaScript-MVC.NET : Get value of Multimensional Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921173/