gpt4 book ai didi

c# - 将 Javascript 对象传递给 C#

转载 作者:行者123 更新时间:2023-11-29 10:14:59 24 4
gpt4 key购买 nike

我已经从我的 Web 表单中检索了数据,并在 button_click 上使用 Javascript 将其放入了一个对象中。然后我尝试使用 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 内的 DropDownLists 中找到 selectedvalues。因此,Javascript 将运行多次,这意味着将传递多个对象。

例如,如何将传递给 C# 的所有这些对象保存在 DataTable 的行中,然后在我按下“保存”按钮时可以使用这些对象。首先,我不太确定 StoreArray 方法中的内容,其次,我不确定保留 DataTable 的最佳方式是什么(如果这是我存储对象的方式) in),在我按下“保存”按钮和 PostBack 之后,我确定它会因此被重置吗?

最佳答案

在 C# 中创建一个反射(reflect)您在 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 页面来承载方法 See here

关于c# - 将 Javascript 对象传递给 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24159608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com