如何使用$ .ajax(..)JSON调用自定义类/对象的'by ref arguments'的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代码 -
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的参数不是ref,那么一切正常。 使用上面提到的webmethod签名,即使用by ref参数,我得到一个服务器错误(在使用firebub看到的服务器响应中) -
No parameterless constructor defined...
答案 0 :(得分:1)
我担心这是一个不受支持的情况。您可以删除ref
关键字,并在方法中修改其值后将参数用作返回类型。
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public MyCustomClass Method1(MyCustomClass MyCustomObj)
{
MyCustomObj.MyProperty *= 2;
return MyCustomObj;
}