将Javascript对象传递给c#
本文关键字:Javascript 对象 | 更新日期: 2023-09-27 18:08:01
我已经从我的web表单检索数据,并将其放入使用Javascript的button_click
对象。然后,我尝试使用Ajax
和JSON
将对象传递给我的c#代码中的方法。
$(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将运行多次,这意味着将传递多个对象。
StoreArray
方法中的内容,其次,我不确定保留数据表的最佳方法是什么(如果这是我存储对象的内容),在我按下"保存"按钮和PostBack
之后,因为我确信它会因此而重置?
在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页面来承载该方法,请参阅此处