如何使用c#object作为参数将javascript对象传递到c#web服务

如何使用c#object作为参数将javascript对象传递到c#web服务,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,所以基本上我有一个C#web方法,我将通过ajax调用它。C#parameter是一个简单的KeyValue对象,如下所示: public class KeyValue { public string Key { get; set; } public string Value { get; set; } } var settingsList= [{Key: 'a', Value: 'A'}, {Key: 'b', Value: 'B'}, {Key: 'c', Value: '

所以基本上我有一个C#web方法,我将通过ajax调用它。C#parameter是一个简单的KeyValue对象,如下所示:

public class KeyValue
{
    public string Key { get; set; }
    public string Value { get; set; }
}
var settingsList= [{Key: 'a', Value: 'A'}, {Key: 'b', Value: 'B'}, {Key: 'c', Value: 'C'}];
var jsonText = JSON.stringify({ settings: settingsList});

$.ajax({
  type: "POST",
  url: "WebService1.asmx/SaveConfigurationValuesForPrivateLabel",
  data: jsonText,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function() { alert("it worked"); },
  failure: function() { alert("Something's wrong"); }
});
在我的javascript中,我创建了一个具有键值对结构的散列

var updateSettingsHash = [];
这是初始化它的地方,然后我稍后使用.add添加到它,并遵循数组的键/值格式(因此它就像一个字典)

现在我的问题是,我有一个接受参数列表的C#webmethod

[WebMethod]
    public ServiceResult SaveConfigurationValuesForPrivateLabel(List<KeyValue> settings)
[WebMethod]
public ServiceResult SaveConfigurationValuesForPrivateLabel(列表设置)

所以真的有两个问题。A) 如何使用ajax传递列表?因为javascript中没有列表?B)如何在javascript中使用类KeyValue创建实例并能够创建实例列表?

您可以创建javascript对象数组,并使用jquery调用webmethod,例如:

public class KeyValue
{
    public string Key { get; set; }
    public string Value { get; set; }
}
var settingsList= [{Key: 'a', Value: 'A'}, {Key: 'b', Value: 'B'}, {Key: 'c', Value: 'C'}];
var jsonText = JSON.stringify({ settings: settingsList});

$.ajax({
  type: "POST",
  url: "WebService1.asmx/SaveConfigurationValuesForPrivateLabel",
  data: jsonText,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function() { alert("it worked"); },
  failure: function() { alert("Something's wrong"); }
});
至于在javascript中直接使用C#类,我认为这是不可能的,您可以使用如上所示的匿名对象,或者创建如下的对象原型:

function KeyValue(Key, Value){
   this.Key = Key;
   this.Value = Value;
}

var keyValuePair = new KeyValue('x', 'X');

列表可以用javascript中的匿名对象表示(var list=[{Key=“ABC”,Value=“DEF”},{Key=“ZZZ”,Value=“YYY”}];)。然后,将其序列化为json以传输到asp.netOk是有意义的,但仍在试图找出如何将C#类传递到javascript ajax调用中。看看我的回答是否对您有所帮助。这比你想要的要深入一点,但应该会让你走上正轨。如果你以后还有任何问题,请告诉我,我会尽力帮助你。