2015-04-03 36 views
2

所以基本上我有一個C#web方法,我將通過ajax調用。 C#的放慢參數是一個簡單的鍵值對象,看起來像這樣:如何將c#對象作爲參數傳遞給c#web服務的javascript對象

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

和我的javascript我創建了有一個鍵值對結構的哈希值。

var updateSettingsHash = []; 

這就是它的初始化,然後我添加到它以後使用。新增,以及按照對所述陣列的鍵/值格式(因此它表現得象一個字典)。

所以我的問題是現在,我有一個接受的參數列表

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

因此,其實2個問題一個C#的WebMethod。 A)如何使用ajax傳入列表?由於在JavaScript中沒有列表?和B)我如何使用JavaScript中的類KeyValue來創建實例並能夠創建它們的列表?

+0

列表可以與匿名對象以JavaScript爲{密鑰=「ABC」,值=「DEF」} ,{Key =「ZZZ」,Value =「YYY」}];)。然後,序列化爲json傳輸到asp.net – 2015-04-03 16:18:52

+0

好吧,有道理,但仍想弄清楚如何將C#類傳遞到javascript ajax調用中。 – Omeed 2015-04-03 16:20:32

+0

看看我的答案[這個問題](http://stackoverflow.com/questions/27446435/jquery-ajax-fills-javascript-variable-issue/27449243#27449243)可以幫助你。它比你想要的要深入一點,但應該讓你走上正軌。如果您之後還有其他問題,請告知我,我會盡我所能提供幫助。 – 2015-04-03 16:41:40

回答

0

您可以創建JavaScript對象的數組,例如使用jQuery的調用像這樣的WebMethod:

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#類,我不認爲這是可能的,你可以既可以使用匿名對象像上面所示或創建一個對象原型是這樣的:

(VAR列表= [
function KeyValue(Key, Value){ 
    this.Key = Key; 
    this.Value = Value; 
} 

var keyValuePair = new KeyValue('x', 'X'); 
相關問題