将Javascript对象传递给c#

本文关键字:Javascript 对象 | 更新日期: 2023-09-27 18:08:01

我已经从我的web表单检索数据,并将其放入使用Javascript的button_click对象。然后,我尝试使用AjaxJSON将对象传递给我的c#代码中的方法。

Javascript:

$(document).ready(function () {
    $("#go").click(function () {
        $('#<%=gv_Rota.ClientID%>')
            .find('tr')
            .each(function (row) {
                $(this).find('select')
                    .each(function (col) {
                        $ctl = $(this)
                        if ($ctl.is('select')) { 
                            var shift = $ctl.val();
                            var day = row;
                            var wk = col + 1;
                            var objectitem = { ShiftId: shift, Day: day, Week: wk };
                            $.ajax({
                                url: '/Administration.aspx/StoreObject',
                                type: 'POST',
                                contentType: 'application/json',
                                data: JSON.stringify({ myObject: objectitem })
                            });
                        }
                    });
                });
            });
        });

c#背后:

[WebMethod]
public static void StoreObject(string[] myObject)
{
}

在Javascript中,你可以看到它在GridView周围循环,并从GridView中的下拉列表中找到selectedvalues。因此,Javascript将运行多次,这意味着将传递多个对象。

例如,当我按下"保存"按钮时,我如何保存所有这些传递给c#的数据表行中的对象。首先,我不太确定StoreArray方法中的内容,其次,我不确定保留数据表的最佳方法是什么(如果这是我存储对象的内容),在我按下"保存"按钮和PostBack之后,因为我确信它会因此而重置?

将Javascript对象传递给c#

在c#中创建一个类来反映JavaScript中的对象

像这样:

public class Item
    {
        public string Id { get; set; }
        public string Day { get; set; }
        public string Week { get; set; }
    }

当你输入

[WebMethod]
public static void StoreObject(Item myObject)
{
}
编辑:

如果你想把项目保存到一个集合中,你可以像这样创建一个项目列表:

 private List<Item> myList = new List<Item>();
[WebMethod]
public void StoreObject(Item myObject)
{
    myList.Add(myObject);
}

注意:它不能是静态的工作。我不确定WebMethods是否支持静态方法。如果没有,则需要创建一个asmx页面来承载该方法,请参阅此处