2010-12-10 95 views
1

通過自定義對象如何使用$阿賈克斯(..)JSON調用有「由裁判爭論」自定義類/對象ASMX webMethods的?可能嗎?

我的C#代碼 -

public class MyCustomClass{ public int MyProperty; MyCustomClass(){}} 

    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]  
    public Method1(ref MyCustomClass MyCustomObj) 
    { MyCustomObj.MyProperty*=2; return MyCustomObj;} 

我JS/jQuery代碼 - 如果將WebMethod的說法不被裁判

function myCustomClass(){this.myProperty;}   
var myCustomObj = new myCustomClass(); 
myCustomObj.myProperty = 100; 

$.ajax({ 
       type: "POST", 
       data: "{'myCustomObj': " + JSON.stringify(myCustomObj) + "}", 
       url: "test.asmx/Method1", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(response) { 
        var data = response.d; 
        alert(data.MyProperty); 
       }, 
       failure: function(msg) { 
        alert(msg); 
       } 
      }); 

這一切工作正常。 與裁判爭論將WebMethod,即上面提到的簽名有,我得到(使用firebub出現在服務器響應)的服務器錯誤 -

No parameterless constructor defined... 

回答

1

這恐怕是不支持的情況。您可以刪除ref關鍵字,並在修改方法內的值後使用參數作爲返回類型。

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]  
public MyCustomClass Method1(MyCustomClass MyCustomObj) 
{ 
    MyCustomObj.MyProperty *= 2; 
    return MyCustomObj; 
} 
+0

Thx Darin。我已經嘗試過了,它的確如你所說的那樣工作。只是希望 – tubelight 2010-12-10 16:08:05

+0

@tubelight,有什麼不工作?當我測試它工作正常。我能夠在'response.d.MyProperty'中獲得更新後的值。 – 2010-12-10 16:09:06

+0

Thx Darin。我已經嘗試過了,它的確如你所說的那樣工作。只是希望有一些我錯過了,如果照顧,它將與一個由ref參考。 – tubelight 2010-12-10 16:13:42