2010-01-24 11 views
10

Wie können Werte von Webmethod an den Client im JSON-Format zurückgegeben werden?WebMethod-Rückgabewerte im JSON-Format

Es gibt zwei statische int-Werte, die ich zurückgeben möchte.
Muss ich ein neues Objekt mit diesen 2 Eigenschaften erstellen und es zurückgeben?
Die GetStatus() -Methode häufig genannt wird, und Ich mag nicht die Idee, ein spezielles Objekt jedes Mal nur für json Formatierung ... und

[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 ... 
} 

Auf Client-Seite ich in den Rückgabewert zu fangen:

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

Antwort

11

Ich würde nur mit einem Objekt gehen. Es passt zu dem, was Sie tun müssen. Wenn Sie zwei Rückgabewerte haben, müssen Sie diese strukturiert zusammensetzen.

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

Können Sie ein Beispiel geben? – kenny

+0

Ok, jetzt ein funktionierendes Beispiel hinzugefügt. –

+0

Wie ist es, jedes Mal, wenn die Methode aufgerufen wird, ein neues Objekt zu erstellen? Beeinflusst es nicht die Effizienz? – kenny

Verwandte Themen