我试图在JavaScript上获取多维int[][]
数组的值。
数组在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();
在位置0返回hdn_l_asuetos
,System.Int32 [] []的类型。
我将非常感谢迭代int[][]
数组的任何帮助。
提前谢谢。
答案 0 :(得分:1)
您正在以正确的方式访问多维数组元素
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存在于剃刀视图中,您可以直接将数组分配给变量
var natDays = @Html.Raw(Json.Encode(myArr))
这样,当渲染视图时,你将把数组作为对象文字:
var natDays = [ [ 1,2,3] , [4,5,6]... ]
答案 1 :(得分:0)
尝试使用JSON将双数组值字符串化为字符串,然后再将其分配给输入值,然后在检索它时,使用JSON将其解析回来。如果你只是将double数组值分配给元素的value属性,它就不会工作,因为它只能存储字符串。你得到的可能是以错误的方式解释为字符串的数组。