2016-12-21 2 views
-1

オブジェクト配列内のfullcalendarイベントを取得してビューモデルに保存して、javascriptに渡して完全なカレンダーイベントにロードできるようにします以下のように。しかし、私はeventArrayとしてスクリプトセクションに格納するときにエラーが発生しています!私のビューモデルからフルカラーイベントのjavascript変数へのオブジェクト配列のバインド

私のサービス層が...ここ

SpaceEventsViewModel viewModel = new SpaceEventsViewModel(); 

      var eventList = from e in events 
          select new 
          { 
           id = e.SpaceEventId, 
           title = e.Title, 
           start = e.EventDateTime 
          }; 

      viewModel.EventArray = eventList.ToArray(); 

      return viewModel; 

は、私の見解モデル...である私は、使用するjsの変数にEventArrayを設定しようとここに私の見解で
public class SpaceEventsViewModel 
{ 
    public object[] EventArray { get; set; } 
} 

eventArray =

""(イベントデータの配列ではありません)変数eventsArrayの内容を見て、イベントカレンダーのイベントをロードします。> f__AnonymousType44`3 [可能System.Int32、可能System.String、のSystem.DateTime] []」

<script> 
    var eventsArray = "@Model.EventArray"; 
</script> 

これが正しいデータフルカレンダーのニーズではありませんので、私はエラーを取得します。

最終的に私はこのような私の完全なカレンダーイベントオプションにeventsArrayを渡したい:

$('#calendar').fullCalendar({ 
 
       //defaultDate: '2016-12-17', 
 
       header: { 
 
        left: 'title', //today', 
 
        center: '', 
 
        right: 'prev,next' 
 
       }, 
 
       defaultView: 'month', 
 
       editable: false, 
 
       allDaySlot: false, 
 
       selectable: true, 
 
       eventStartEditable: false, 
 
       //height: 300, 
 
       //eventColor: 'green', 
 
       events: [ eventsArray ] 
 
    });

私はいくつかのことを変更しようとしたが、このエラーを受け取りました。私は、各値の周りに引用符があり、それがfullcalendarのイベントの正しい構文ではないからだと思います。 "予想 ';'"

この

enter image description here

のように見えるビューに渡されるデータの列から来る

この

public class SpaceEventsViewModel 
{ 
    public IEnumerable<FullCalendarEvent> EventArray { get; set; } 
} 

public class FullCalendarEvent 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public DateTime Start { get; set; } 
} 

へのviewmodelを変更し、サービスコードはこれに

var eventList = from e in Events 
          select new FullCalendarEvent 
          { 
           Id = e.SpaceEventId, 
           Title = e.Title, 
           Start = e.EventDateTime 
          }; 

      viewModel.EventArray = eventList; 

      return viewModel; 

私はcorectフォーマットでフルカレンダーの文字列にDateTimeプロパティを変更しますが、私はまだエラー

enter image description here

+0

にそれはHtml.Raw(Json.Encode(Model.EventArray))@ ' 'VARのeventsArray =である必要があります。 'id'、' title'と 'start'の2つのプロパティを含むモデルのコレクションを渡します。 –

+0

こんにちはスティーブン、答えてくれてありがとう、答えの後半部分の短い例を挙げてください。私はあなたが "これらの2つのプロパティ(id、title、およびstart)を含むモデルのコレクションを渡す"ということを理解するのに苦労している。 – user1186050

+1

'publicオブジェクト[] EventArray {get;セット; } ''をあなたの 'SpaceEventsViewModel'に追加し、' int id'、 'string title'と' DateTime start'プロパティを追加します。クエリを 'select new SpaceEventsViewModel {id = e.SpaceEventId、....}'に変更し、ビューに 'IEnumerable 'を渡します。そして、 '' @ Html.Raw(Json.Encode(モデル)) '' –

答えて

1
としてこれを取得しています。この

<script> 
    var eventsArray = "@Html.Raw(Json.Encode(Model.EventArray))"; 
</script> 

にHTMLを変更

fullcalendarプラグインは、eventsオプション用のjavascriptオブジェクトの配列を必要とし、プロパティ名は小文字にする必要があります。

変更

public class FullCalendarEvent 
{ 
    public int id { get; set; } 
    public string title { get; set; } 
    public DateTime start { get; set; } 
} 

のモデルとスクリプト

var eventsArray = @Html.Raw(Json.Encode(Model.EventArray)) // no quotes 
$('#calendar').fullCalendar({ 
    .... 
    events: eventsArray // not in brackets 
}); 
関連する問題