2016-11-08 38 views
1

からのパス日付配列Iは、利用可能な日付を含むリストを作成し、JSONにそれを連載している:jQueryの日付ピッカー - コントローラ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のにモデルデータを渡し、日付ピッカーに日付を渡すためにしてみてください。

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私はJSONを使用する場合、次のように得られたとは対照-2016

Iはまた、宣言しようとしている[ "20-11-2016"、 "17-12-2016"]

varを配列として返します。

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

また、jsonの実装が成功していません。 jsonをコンマで区切った文字列に変換する方法はありますか?

答えて

2

JavaScriptSerializer().Serializeメソッドは、リストを文字列に変換します。クライアントサイドコード用のjavascript配列が必要な場合は、ビューモデルプロパティをstringからcollection(array/list)に変更する必要があります。

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

...ありがとう –

関連する問題