2010-01-24 27 views
10

¿Cómo devolver valores de Webmethod al cliente en formato JSON?WebMethod devuelve valores en formato JSON

Hay dos valores int estáticos que deseo devolver.
¿Necesito crear un objeto nuevo con esas 2 propiedades y devolverlo?
El GetStatus() método se llama con frecuencia y no me gustan la idea de crear un objeto especial cada vez sólo por el formato 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 ... 
} 

En el lado del cliente que captura el valor de retorno en:

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

Respuesta

11

Me gustaría ir con un objeto. Encaja con lo que necesitas hacer. Si tiene dos valores devueltos, debe unirlos de forma estructurada.

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

¿Puedes dar un ejemplo? – kenny

+0

Ok, agregué un ejemplo de trabajo ahora. –

+0

¿Qué hay de volver a crear un objeto nuevo cada vez que se llama al método? ¿No afecta la eficiencia? – kenny