2010-01-24 6 views
10

Comment renvoyer des valeurs de Webmethod au client au format JSON?Valeurs de retour WebMethod au format JSON

Il y a deux valeurs int static que je veux retourner.
Ai-je besoin de créer un nouvel objet avec ces 2 propriétés et de le renvoyer?
La méthode GetStatus() est appelée souvent et je n'aime pas l'idée de créer un objet spécial à chaque fois juste pour la mise en forme JSON ...

[WebMethod] 
public static int GetStatus() 
{ 
    int statusProcess,statusProcessTotal; 

    Status.Lock.EnterReadLock(); 
    statusProcess=Status.Process; //Static field 
    statusProcessTotal=Status.ProcessTotal; //Static field   
    Status.Lock.ExitReadLock(); 

    return ... 
} 

côté client je prends la valeur de retour dans:

function OnSucceeded(result, userContext, methodName) 
(PageMethods.GetStatus(OnSucceeded, OnFailed);) 

Répondre

11

Je voudrais juste aller avec un objet. Cela correspond à ce que vous devez faire. Si vous avez deux valeurs de retour, vous devez les assembler de manière structurée.

public class StatusResult 
     { 
      public int StatusProcess { get; set; } 
      public int StatusProcessTotal { get; set; } 
     } 

    [WebMethod] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public StatusResult GetStatus() 
     { 
      int statusProcess,statusProcessTotal; 

      //Status.Lock.EnterReadLock(); 
      statusProcess = 5; 
      statusProcessTotal = 1; //Static field   


      var result = new StatusResult(); 
      result.StatusProcess = statusProcess; 
      result.StatusProcessTotal = statusProcessTotal; 

      return result; 
     } 
+0

Pouvez-vous donner un exemple? – kenny

+0

Ok, a ajouté un exemple de travail maintenant. –

+0

Qu'en est-il de recréer un nouvel objet à chaque fois que la méthode est appelée? Cela n'affecte-t-il pas l'efficacité? – kenny

Questions connexes