2016-11-08 27 views
1

我已經創建了一個包含可用日期列表,系列化成JSON通行證日期排列:Jquery的日期選擇器從控制器MVC

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"]; 
    } 
} 

datepicker不會填充日期。 然而,如果我輸入的日期,它的作用:

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); 
在Razor視圖

現在,

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

神奇...謝謝 –