我不太了解 JS 和 ASP.NET MVC 3 Razor 之间的关系。无论服务器上使用哪种技术生成页面,Javascript 都会在客户端运行。所以在javascript上一个数组就是一个数组。
在 javascript 中定义对象数组有多种可能性
var activeDates = [ '7-21-2011', '7-22-2011' ];
或:
var activeDates = new Array();
activeArrays.push('7-21-2011');
activeArrays.push('7-22-2011');
还是:
var activeDates = new Array();
activeArrays[0] = '7-21-2011';
activeArrays[1] = '7-22-2011';
最后,所有这些都代表同一个数组。但它是一个字符串数组,而不是日期。
如果你想要一个日期数组,你可以这样做:
var activeDates = [
new Date(2011, 6, 21, 0, 0, 0, 0),
new Date(2011, 6, 22, 0, 0, 0, 0)
];
现在我可以看到与您对 ASP.NET MVC 的问题的唯一关系是您的视图模型上可能有一些数组:
public class MyViewModel
{
public DateTime[] ActiveDates { get; set; }
}
您想在 javascript 数组中进行序列化和操作。在这种情况下,语法如下:
@model MyViewModel
<script type="text/javascript">
var activeDates = @Html.Raw(Json.Encode(Model.ActiveDates));
</script>
现在,由于 DateTime 字段在 .NET 中的 JSON 序列化方式,您最终将在生成的 HTML 中得到以下内容:
var activeDates = ["\/Date(1309471200000)\/","\/Date(1311199200000)\/"];
如果您想将此字符串数组转换为实际 javascript 日期数组:
var dates = $.map(activeDates, function(date, index) {
date = date.replace('/Date(', '').replace(')/', '');
return new Date(parseInt(date));
});