ja nie bardzo rozumiem związek między JS i ASP.NET MVC 3 Razor. JavaScript działa po stronie klienta, bez względu na to, która technologia została użyta na serwerze do wygenerowania strony. Tak więc w javascript tablica jest tablicą.
Istnieje kilka możliwości, aby zdefiniować tablicę obiektów w JavaScript
var activeDates = [ '7-21-2011', '7-22-2011' ];
czyli
var activeDates = new Array();
activeArrays.push('7-21-2011');
activeArrays.push('7-22-2011');
lub jeszcze:
var activeDates = new Array();
activeArrays[0] = '7-21-2011';
activeArrays[1] = '7-22-2011';
Na th końcu wszyscy ci reprezentują ta sama tablica. Ale jest to ciąg ciągów, a nie dat.
Jeśli chcesz mieć tablicę dat, oto co można zrobić:
var activeDates = [
new Date(2011, 6, 21, 0, 0, 0, 0),
new Date(2011, 6, 22, 0, 0, 0, 0)
];
Teraz tylko relacja widzę z pytaniem do ASP.NET MVC jest to, że prawdopodobnie masz jakąś tablicę na Twój model widoku:
public class MyViewModel
{
public DateTime[] ActiveDates { get; set; }
}
, który chcesz przekształcić do postaci szeregowej i zmanipulować w tablicy javascript. W tym przypadku Oto składnia:
@model MyViewModel
<script type="text/javascript">
var activeDates = @Html.Raw(Json.Encode(Model.ActiveDates));
</script>
Teraz ze względu na polach sposób DateTime są JSON odcinkach w .NET skończy się z następujących w wygenerowanym HTML:
var activeDates = ["\/Date(1309471200000)\/","\/Date(1311199200000)\/"];
i jeśli chciałeś przekonwertować tej tablicy ciągów do tablicy rzeczywistych dat javascript:
var dates = $.map(activeDates, function(date, index) {
date = date.replace('/Date(', '').replace(')/', '');
return new Date(parseInt(date));
});
Skorygowany moje pytanie, aby mieć lepszy opis problemu, dzięki! – Matthieu
+1 - Możesz nawet skrócić funkcję mapy, aby użyć 'nowej daty (parseInt (date.substr (6));' ponieważ 'parseInt' zignoruje zakończenie')/'. – TheCloudlessSky
@DarinDimitrov Nie mieszamy tutaj C# i JS. Po prostu próbujemy wyrenderować instrukcję za pomocą C#, którą kompilator JS może pobrać i zainicjować tablicę. – Lakshay