2

フルカレンダー イベントを Json 経由でコントローラーに渡そうとしていますが、null がコントローラーに渡されますか? 私は何を間違っていますか?ここに私のビューコードがあります:

<script type='text/javascript'>
    $(document).ready(function () {
        $(function () {
            $("#save").click(function () {
                var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
                alert(eventsFromCalendar);
                $.ajax(
            {

                url: '@Url.Action("Save")',
                type: 'POST',
                traditional: true,
                data: eventsFromCalendar,
                dataType: "json",
                success: function (response) {
                    alert(response);
                },
                error: function (xhr) {
                    debugger;
                    alert(xhr);
                }
            });
            });
        });
    });
     </script> 

そして私のコントローラー:

[HttpPost]
public JsonResult Save(object[] data)
{
    // edit the item and get it back
    return Json("success");
}

Jscript に侵入し、eventsFromCalendar を見ると、正常に読み込まれています。

4

1 に答える 1

3

イベントをJSONテキストに変換してみてください。

data:{ eventsJson: JSON.stringify(eventsFromCalendar) }

JSON.stringify関数(JavaScript)を参照)

次に、Json.NETなどのツールを使用して、コントローラーアクションで投稿されたJSON文字列を解析します。

[HttpPost]
public ActionResult Save(string eventsJson)
{
    var events = JsonConvert.DeserializeObject<IEnumerable<Event>>(eventsJson);
    return View();
}

public class Event
{
    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
}
于 2012-07-03T20:23:24.783 に答える