3

jquery fullcalendar をアプリケーションに統合しています。ここに私が使用しているコードがあります:

index.aspx:

<script type="text/javascript">
   $(document).ready(function() {
       $('#calendar').fullCalendar({
           events: "/Scheduler/CalendarData"
       });
   });  
</script>

<div id="calendar">
</div>

Scheduler/CalendarData のコードは次のとおりです。

public ActionResult CalendarData()
    {

        IList<CalendarDTO> tasksList = new List<CalendarDTO>();

        tasksList.Add(new CalendarDTO
        {
            id = 1,
            title = "Google search",
            start = ToUnixTimespan(DateTime.Now),
            end = ToUnixTimespan(DateTime.Now.AddHours(4)),
            url = "www.google.com"
        });
        tasksList.Add(new CalendarDTO
        {
            id = 1,
            title = "Bing search",
            start = ToUnixTimespan(DateTime.Now.AddDays(1)),
            end = ToUnixTimespan(DateTime.Now.AddDays(1).AddHours(4)),
            url = "www.bing.com"
        });

        return Json(tasksList,JsonRequestBehavior.AllowGet);
    }

    private long ToUnixTimespan(DateTime date)
    {
        TimeSpan tspan = date.ToUniversalTime().Subtract(
        new DateTime(1970, 1, 1, 0, 0, 0));

        return (long)Math.Truncate(tspan.TotalSeconds);
    }

    public ActionResult Index()
    {
        return View("Index");
    }

また、site.master の head タグ内に次のコードがあります。

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server" />
<link href="<%= Url.Content("~/Content/jquery-ui-1.7.2.custom.css") %>" rel="stylesheet" type="text/css" />
<link href="~Perspectiva/Content/Site.css" rel="stylesheet" type="text/css" />
<link href="~Perspectiva/Content/fullcalendar.css" rel="stylesheet" type="text/css" />
<script src="~Perspectiva/Scripts/jquery-1.4.2.js" type="text/javascript"></script>
<script src="~Perspectiva/Scripts/fullcalendar.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftAjax.debug.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>

私がしたことはすべてhttp://szahariev.blogspot.com/2009/08/jquery-fullcalendar-and-aspnet-mvc.htmlからほとんどコピーされました

/scheduler/calendardata に移動すると、CalendarData 関数で作成したものとまったく同じ内容の json データを保存するためのプロンプトが表示されます。

ページを正しくレンダリングするにはどうすればよいですか?

前もって感謝します、

エラン

更新: Rune と Franci のコメントに従って、index.aspx と同じ CalendarData.aspx というビューを追加しました。結果:

  • /scheduler/calendardata に移動すると、ファイルの保存ダイアログが引き続き表示されます。
  • /scheduler/index に移動すると、Visual Studio で次のランタイム エラーが発生します。 Microsoft JScript ランタイム エラー: オブジェクトが必要です。VS は、scrip タグの $(document).ready(function()...) コードを強調表示します。
4

6 に答える 6

1

ActionResult の代わりに JSONResult を使用してみてください。

public JSonResult CalendarData()
{
    IList<CalendarDTO> tasksList = new List<CalendarDTO>();

    tasksList.Add(new CalendarDTO
    {
        id = 1,
        title = "Google search",
        start = ToUnixTimespan(DateTime.Now),
        end = ToUnixTimespan(DateTime.Now.AddHours(4)),
        url = "www.google.com"
    });
    tasksList.Add(new CalendarDTO
    {
        id = 1,
        title = "Bing search",
        start = ToUnixTimespan(DateTime.Now.AddDays(1)),
        end = ToUnixTimespan(DateTime.Now.AddDays(1).AddHours(4)),
        url = "www.bing.com"
    });

    return Json(tasksList, JsonRequestBehavior.AllowGet);
}
于 2010-07-19T19:15:14.317 に答える
0

CalendarData() にマップされた URL ではなく、Index.aspx を返すアクションにマップされた URL に移動する必要があります。これは「/scheduler」のようなものになると思います。「/scheduler/calenderData」に移動すると、サーバーは Json データをブラウザーに直接返します。

于 2010-05-26T20:05:03.857 に答える
0

ブラウザでに移動する/scheduler/calendarDataと、ブラウザは で応答を取得しContent-Type: application/jsonます。一部のブラウザーは、このようなコンテンツ タイプを表示する方法を認識していないため、コンテンツをローカル ファイルとして保存できるため、別のプログラムで表示できます。

代わりにブラウザに移動する必要が/scheduler/indexあります。これにより、すべてのブラウザでレンダリングできる人間が判読できる結果が返されます (has Content-Type: text/html)。

CalendarDataデバッグ目的で から返されたコンテンツを確認する場合は、次の 2 つのオプションがあります。

  • 理解できるブラウザを使用してくださいContent-Type: application/json
  • HTTP トラフィックを検査できるFiddlerなどのツールを使用します。
于 2010-05-26T20:18:01.397 に答える
0

私は同じ問題を抱えていて、最初にビューを返す基本的な ActionResult がありませんでした...? 私はそれがもっと深いものだと思っていました...しかし、これが私の問題を解決するために確認すべき基本的なことです;

私のホームコントローラーで;

public ActionResult Index()
    {
        ViewData["Message"] = "Whatever!!! just work!";

        return View();
    }

グローバルでは、修正しようとしたときに GetData アクションにローテーションしていたため、マップルートをデフォルトに戻す必要がありました。

routes.MapRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);
于 2010-07-09T06:08:18.037 に答える
0

エンドユーザーにクレイジーなことをさせずにこれを機能させる唯一の方法は、コンテンツタイプを「text/html」に変更することです。

上記のすべての提案と、他のいくつかの提案を試しました。

一体、私もこれを試しました

于 2013-03-18T15:04:55.507 に答える
0

ActionResult の代わりに JSONResult を使用してみてください。

于 2010-07-03T00:09:00.660 に答える