Comment utiliser $ .ajax (..) JSON pour appeler asmx webmethods qui ont 'par ref arguments' pour les classes/objets personnalisés? C'est possible?
Mon code C# -
public class MyCustomClass{ public int MyProperty; MyCustomClass(){}}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Method1(ref MyCustomClass MyCustomObj)
{ MyCustomObj.MyProperty*=2; return MyCustomObj;}
Mon js/code 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);
}
});
Tout cela fonctionne bien si l'argument du webmethod est pas par ref. Avec la signature mentionnée ci-dessus du webmethod, à savoir un par l'argument ref, je reçois une erreur de serveur (en réponse du serveur vu en utilisant firebub) -
No parameterless constructor defined...
Thx Darin. J'ai essayé cela et cela fonctionne comme vous l'avez mentionné. En espérant que – tubelight
@tubelight, ce qui ne fonctionne pas? Quand j'ai testé ça a bien fonctionné. J'ai été en mesure d'obtenir la valeur mise à jour dans 'response.d.MyProperty'. –
Thx Darin. J'ai essayé cela et cela fonctionne comme vous l'avez mentionné. En espérant qu'il y a quelque chose qui me manque et si on s'en occupe, ça marchera avec un ref arg. – tubelight