WebMethod以JSON格式返回值

时间:2010-01-24 13:56:40

标签: asp.net javascript ajax json

如何以JSON格式将值从Webmethod返回给客户端?

我想要返回两个静态int值 我是否需要使用这两个属性创建新对象并将其返回? 经常调用GetStatus()方法,我不喜欢每次只为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 ...
}

在客户端,我捕获了返回值:

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

1 个答案:

答案 0 :(得分:11)

我会选择一个对象。它符合您的需要。如果您有两个返回值,则必须以结构化方式将它们组合在一起。

  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;
        }