2016-11-08 57 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

神奇...谢谢 –