簡體   English   中英

使用Ajax將json / javascript數據/對象傳遞給c#函數

[英]Pass json/javascript data/objects to c# function using ajax

我正在使用FullCalendar( http://arshaw.com/fullcalendar/ ),並且在使用json將數據傳遞到ac#函數的ASP.net頁面后面的代碼中時,我需要幫助。

我在我的FullCalendar Web應用程序中使用json加載數據,如下所示:

后面的代碼:

    [WebMethod]
    public static List<Event> GetEvents()
    {
        List<Event> events = new List<Event>();
        events.Add(new Event()
        {
            EventID = 1,
            EventName = "EventName 1",
            StartDate = DateTime.Now.ToString("MM-dd-yyyy"),
            EndDate = DateTime.Now.AddDays(2).ToString("MM-dd-yyyy"),
            EventColor = "red"
        });
        events.Add(new Event()
        {
            EventID = 2,
            EventName = "EventName 2",
            StartDate = DateTime.Now.AddDays(4).ToString("MM-dd-yyyy"),
            EndDate = DateTime.Now.AddDays(5).ToString("MM-dd-yyyy"),
            EventColor = "green"
        });

        return events;
    }

asp.x頁面:

     events: function(start, end, callback)
            {
                $.ajax(
                {
                    type: 'POST',
                    contentType: 'application/json',
                    data: "{}",
                    dataType: 'json',
                    url: "Calendar.aspx/GetEvents",
                    cache: false,
                    success: function (response) {

                        var events = $.map(response.d, function (item, i) {
                            var event   = new Object();
                            event.id    = item.EventID;
                            event.start = new Date(item.StartDate);
                            event.end   = new Date(item.EndDate);
                            event.title = item.EventName;
                            event.color = item.EventColor;
                            return event;
                         })
                         callback(events);
                    },

                    error: function (err) {
                       alert('Error');
                    }
                });
             },

一切正常。 現在,我想通過調用一個函數並傳遞數據來保存數據。 到目前為止,這是我所做的:

后面的代碼:

    [WebMethod]
    public static bool SaveEvents(List<Event> events)
    {
        //iterate through the events and save to database

        return true;
    }

asp.x頁面

    function save() {
        var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');

        var events = $.map(eventsFromCalendar, function (item, i) {
            var event   = new Object();
            event.id    = item.id;
            event.start = item.start;
            event.end   = item.end;
            event.title = item.title;
            event.color = item.color;
            return event;
        });

        $.ajax(
        {
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(events),     **<-- I have to pass data here but how???**
            dataType: 'json',
            url: "Calendar.aspx/SaveEvents",
            cache: false,
            success: function (response) {
                alert('Events saved successfully');
            },

            error: function (err) {
                alert('Error Saving Events');
            }
        });
        return false;            
    }

上面的ajax帖子是我需要幫助的地方。 可變事件包含所有FullCalendar事件信息。 如何將數據“事件”傳遞給函數“ SaveEvents”? 如果需要,我可以更改SaveEvents簽名。

編輯如果我更改我的c#函數以使用像s0這樣的數組:

    [WebMethod]
    public static bool SaveEvents(Event[] newEvents)
    {

        return true;
    }

並通過以下數據:

    data: JSON.stringify({ newEvents: events }),

然后使用大小為4的數組調用函數'SaveEvents' ,但是所有數據值均為null,這為什么呢?

謝謝

從代碼中可以明顯看出,您擁有ac#類

public class Events
{
    public int EventID {get; set;}
    public string EventName {get;set;}
    public StartDate {get; set;} 
    public string end {get; set;} 
    public string color {get; set;}
}

因此,采用json數組。 一個示例// //數組將作為數據提供給c#方法

var newEvents=[     
  {
        EventID : 1,
        EventName : "EventName 1",
        StartDate : "2015-01-01",
        EndDate : "2015-01-03",
        EventColor : "red"
  },
  {
        EventID : 2,
        EventName : "EventName 2",
        StartDate : "2015-01-02",
        EndDate : "2015-01-04",
        EventColor : "green"
  }
];

現在,將JSON對象傳遞到發布的URL的ajax請求

    $.ajax
    ({
        type: 'POST',
        contentType: 'json',
        data: {newEvents:newEvents},// Pass data as it is. Do not stringyfy
        dataType: 'json',
        url: "Calendar.aspx/SaveEvents"
        success: function (response) {
            alert('Events saved successfully');
        },
        error: function (err) {
            alert('Error Saving Events');
        }
    });

更新:

為確保沒有其他問題,請測試您的“將事件另存為”。 如果一切順利,上面的內容也應該可以正常工作,因為它對我有用:)

[WebMethod]
public static bool SaveEvents(string EventName)
{
    //iterate through the events and save to database

    return true;
}

    $.ajax
    ({
        type: 'POST',
        contentType: 'json',
        data: {EventName:'myevet 1'},
        url: "Calendar.aspx/SaveEvents",
        cache: false,
        success: function (response) {
            alert('Events saved successfully');
        },
        error: function (err) {
            alert('Error Saving Events');
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM