$ .ajax (..) и передача пользовательских объектов по ref - PullRequest
1 голос
/ 10 декабря 2010

Как использовать $ .ajax (..) JSON для вызова веб-методов asmx, которые имеют аргументы «по ссылкам» для пользовательских классов / объектов?Является ли это возможным?

Мой код 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.С вышеупомянутой подписью веб-метода, то есть с аргументом by ref, я получаю ошибку сервера (в ответе сервера, замеченном с использованием firebub) -

No parameterless constructor defined...

1 Ответ

1 голос
/ 10 декабря 2010

Боюсь, что это сценарий, который не поддерживается.Вы можете удалить ключевое слово ref и использовать аргумент в качестве возвращаемого типа после изменения его значения внутри метода.

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]    
public MyCustomClass Method1(MyCustomClass MyCustomObj)
{ 
    MyCustomObj.MyProperty *= 2; 
    return MyCustomObj;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...