2010-01-24 15 views
10

Come restituire i valori da Webmethod al client in formato JSON?Valori di ritorno WebMethod in formato JSON

Ci sono due valori int statici che voglio restituire.
Devo creare un nuovo oggetto con queste 2 proprietà e restituirlo?
Il GetStatus() metodo viene chiamato spesso e non mi piace l'idea di creare un oggetto speciale ogni volta solo per la formattazione 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 ... 
} 

Sul lato client prendo il valore di ritorno a:

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

risposta

11

Vorrei andare con un oggetto. Si adatta a ciò che devi fare. Se hai due valori di ritorno devi metterli insieme in modo strutturato.

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

Puoi fare un esempio? – kenny

+0

Ok, ha aggiunto un esempio funzionante ora. –

+0

Che dire ricreare un nuovo oggetto ogni volta che viene chiamato il metodo? Non influisce sull'efficienza? – kenny