【问题标题】:WebMethod return values in JSON formatWebMethod 以 JSON 格式返回值
【发布时间】:2011-01-08 19:05:00
【问题描述】:

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

我要返回两个静态 int 值。
我是否需要使用这 2 个属性创建新对象并返回它?
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);)

【问题讨论】:

    标签: asp.net javascript ajax json


    【解决方案1】:

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

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

    【讨论】:

    • 每次调用方法时重新创建新对象怎么样?不影响效率吗?
    • 我从来没有遇到过问题。我觉得你想多了。
    • 这发生在我们最好的人身上。
    • 我投票给你了 :) 。如果没有新的答案,我会接受你的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2011-06-11
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多