2011-04-03 11 views
7

FullCalendar jqueryプラグインをASP.NET MVC3アクションのJson配列にバインドすることに失敗しています。FullCalendarはASP.NET MVC3のJsonフィードにバインドされません。

私は、問題を見つけようとしてコードからほとんどすべてを削除しました。

アクション(カレンダーコントローラ)

public JsonResult Events(double start, double end) 
    { 
     var rows = new object[] { new { title="Event1", start= "2011-04-04" }, 
            new { title="Event2", start= "2011-04-05" } }; 
     return Json(rows, JsonRequestBehavior.AllowGet); 
    } 

ビュー

<script type='text/javascript'> 
    $(document).ready(function() { 
    $('#calendar').fullCalendar({ 
     events: '@Url.Content("~/Calendar/Events")' 
    }) 
}); 
:私は、そのすべてのSOとブログ記事私が読んだから、働くべき本、が残っています

結果は空のカレンダーであり、バインドされたイベントはありません。

JSON結果に

[{"title":"Event1","start":"2011-04-04"},{"title":"Event2","start":"2011-04-05"}] 

をそして、これは正常に動作します::私は、JSONを取得していることを確認した私は、ISO8601を含む日付形式(のすべての番号を使用して試してみました

$(document).ready(function() { 
     $('#calendar').fullCalendar({ 
      events: [{title: 'Event1',start: '2011-04-04'}, 
        {title: 'Event2',start: '2011-04-05'} 
        ]}); 
    }); 

* nixタイムスタンプと同じ結果を得ました:バインドされていないイベント、空白のカレンダー。$ .ajaxエラー:関数を.fullCalendarオブジェクトに追加すると起動します。よく見える 私に。

私はFullCalendar 1.5(1.4.11でも試しましたが)、JQuery 1.5.1、JQueryUI 1.8.11を使用しています。

私が思うすべてを試しました。どのアイデアも大変ありがとうございます!

+0

私はこの問題を発見しました。jquery.validate.jsとの関数名の衝突があります。 –

答えて

3

私はこの問題を発見しました。fullcalendar.jsとjquery.validate.jsの間に関数名の衝突があります。

+0

は機能しますか?詳細をご提供ください。 – Gandarez

+0

いいえ、私は覚えていません。これは30ヶ月前です。それが重要な場合は、いくつかの古いバージョンを実行することができますか?しかし、問題はそれ以降のバージョンで解決されたので、問題は何ですか? –

0

たぶん、代わりにこの:

events: '@Url.Action("Events", "Calendar")' 
+0

ありがとうございますが、JSONが正しく返されているため、UrlHelperがURLを構築する方法を変更しても違いはありません。そして、私の行パラメータは既に配列です。問題は間違いなくjquery.validate.jsです。 –

1
:これを試してみてください

events: '@Url.Content("~/Calendar/Events")' 

:この

return Json(rows.ToArray(), JsonRequestBehavior.AllowGet); 

またはその代わりに:

return Json(rows, JsonRequestBehavior.AllowGet); 

これを試してみてください

$ .ajax()メソッドを使用します。

アクション(カレンダーコントローラ)

public JsonResult Events(string start, string end) 
    { 
     //convert string to date 
     DateTime _start = DateTime.TryParse(start, out _start) ? _start : DateTime.Now.Date; 
     DateTime _end = DateTime.TryParse(end, out _end) ? _end : DateTime.Now.Date; 

     var rows = 
     new object[] { new { title="Event1", start= "2011-04-04" },          
     new { title="Event2", start= "2011-04-05" } }; 
     return Json(rows, JsonRequestBehavior.AllowGet); 
    } 

ビュー

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 

    events: function (start, end, callback) { 
     $.ajax({ 
      url: '@Url.Content("~/Calendar/Events")', 
      dataType: 'json', 
      data: { 
       start: start.toLocaleString("yyyy-mm-dd"), 
       end: end.toLocaleString("yyyy-mm-dd") 
      }, 

      success: function (doc) { 
       var events = []; 
       $.each(doc, function (key, val) { 
        events.push({ 
         title: val.title, 
         start: val.start, 
         url: 'http://google.com' 
        }); 
       }); 

       callback(events); 
      } 
     }); 
    } 
    }); 
    }) 

は、これが役立つと期待しています。

+0

いいえ、問題は間違いなく私たちが昨年発見した名前の衝突でした。 ajax呼び出しを拡張することは役に立ちませんでしたが、jquery.validate.jsのより新しいバージョンを使用しました。 –

+0

Heh。私は同様の問題を抱えていた。チュートリアルを除いて、私は指定された開始と終了を文字列ではなく二重として追跡しました。私はあなたのコードでは文字列であり、私はそれを打つことに気づいた。 これが正しいとわかったので、GetEventsコードがバックエンドで呼び出されています。ここに投稿すると、将来他の人に役立ちます。 –

関連する問題