我不太瞭解JS和ASP.NET MVC 3剃鬚刀之間的關係。無論服務器上使用哪種技術來生成頁面,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字段現在JSON在.NET序列化,你會最終在生成的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));
});
調整好自己的問題,有問題的更好的說明,謝謝! – Matthieu
+1 - 你甚至可以縮短map函數使用'new Date(parseInt(date.substr(6)));'因爲'parseInt'會忽略結尾')/'。 – TheCloudlessSky
@DarinDimitrov我們不是在這裏混合使用C#和JS。我們只是試圖通過JS編譯器可以採用的剃鬚刀C#來呈現語句並初始化一個數組。 – Lakshay