2016-11-08 1 views
1

Я создал список, содержащий доступные даты и сериализовать его в формате JSON:Jquery DatePicker - дата Pass массив из контроллера MVC

List<string> dates = new List<string>(); 

foreach(BookingDates itm in model.availableDates) 
{ 
    dates.Add(itm.expDate.ToString("dd-MM-yyyy")); 
} 

model.datesStr = new JavaScriptSerializer().Serialize(dates); 

Я затем передать данные модели в JQuery и попытаться передать даты к DatePicker:

var availableDates = @Html.Raw(Json.Encode(@Model.datesStr)); 
alert(availableDates); 

function available(date) { 
    dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear(); 
    if ($.inArray(dmy, availableDates) != -1) { 
     return [true, "ui-available", "Available"]; 
    } 
    else { 
     return [false, "ui-unavailable", "unAvailable"]; 
    } 
} 

Датпикер не заполняется датами. Если же набираю даты, она делает:

var availableDates = ["20-11-2016","17-12-2016"]; 

Единственное различие, которое я заметил, это результат моего предупреждения, когда даты типизированных, как выше:

20-11-2016,17-12 -2016

Противоположность в результате следующее, когда я использую JSON:

[ "20-11-2016", "17-12-2016"]

Я также попытался объявляя var в виде массива:

var availableDates = []; 
availableDates = @Html.Raw(Json.Encode(@Model.datesStr)); 

новый, без успеха, реализующий json. Должен ли я каким-то образом преобразовать мой json в строку, разделенную запятой?

ответ

2

JavaScriptSerializer().Serialize метод преобразует ваш список в строку. Если вам нужен массив javascript для вашего кода на стороне клиента, вы должны изменить свойство модели представления из строки в коллекцию (массив/список).

public class YourViewModel 
{ 
    public List<string> Dates { set;get;} 
    //Other properties 
} 

И в методе действия,

foreach(BookingDates itm in model.availableDates) 
{ 
    vm.Dates.Add(itm.expDate.ToString("dd-MM-yyyy")); 
} 
return View(vm); 

Теперь с точки зрения бритвы,

@model YourViewModel 
<script> 
    var availableDates = @Html.Raw(Newtonsoft.JsonJsonConvert 
              .SerializeObject(Model.Dates)) 
    console.log(availableDates); 
</script> 
+1

Фантастическая ... спасибо –

Смежные вопросы