繁体   English   中英

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

[英]How to pass javascript object into c# web service with c# object as a parameter

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

public class KeyValue
{
    public string Key { get; set; }
    public string Value { get; set; }
}

在我的JavaScript中,我创建了一个具有键值对结构的哈希。

var updateSettingsHash = [];

这是它的初始化位置,然后我稍后使用.Add将其添加到该数组中,并遵循该数组的键/值格式(因此它的作用就像字典一样)。

现在我的问题是,我有一个接受参数List的C#网络方法

[WebMethod]
    public ServiceResult SaveConfigurationValuesForPrivateLabel(List<KeyValue> settings)

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

您可以创建一个javascript对象数组,并使用例如jquery调用web方法,如下所示:

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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM