从webservice返回两个值

时间:2012-04-17 13:37:21

标签: c# asp.net web-services return

是否可以将两个值从WebService返回到jQuery。

我试过

[WebMethod(EnableSession = true)]
public string testing(string testId)
{
    string data = string.Empty;
    string data1 = string.Empty;
    List<test1> datalist1 = new List<test1>();
    List<test> datalist = new List<test>();

    //coding
    data = jsonSerialize.Serialize(datalist1);
    data1 = jsonSerialize.Serialize(datalist);
    return [data,data1];
}

但显示错误....我们如何从webservice返回两个值.....

5 个答案:

答案 0 :(得分:9)

另一种方法是创建一个具有所需两个返回值的自定义数据类型:

[Serializable]
public sealed class MyData
{
    public string Data { get; set; }
    public string Data1 { get; set; }
}

...

[WebMethod(EnableSession = true)]
public MyData testing(string testId)
{
    string data = string.Empty;
    string data1 = string.Empty;
    List<test1> datalist1 = new List<test1>();
    List<test> datalist = new List<test>();

    //coding
    data = jsonSerialize.Serialize(datalist1);
    data1 = jsonSerialize.Serialize(datalist);
    return new MyData { Data = data, Data1 = data1 };
}

[Serializable]
public sealed class MyData
{
    public List<test> Data { get; set; }
    public List<test1> Data1 { get; set; }
}

...

[WebMethod(EnableSession = true)]
public string testing(string testId)
{
    MyData data = new MyData();
    string alldata = string.Empty;
    List<test1> datalist1 = new List<test1>();
    List<test> datalist = new List<test>();

    //coding
    data.Data = datalist1;
    data.Data1 = datalist;
    alldata = jsonSerialize.Serialize(data);
    return alldata;
}

答案 1 :(得分:7)

那么你可以返回数组字符串:

public string[] Testing(...)
{
    return new string[] { data, data1 };
}

然后,您需要在客户端上单独执行JSON反序列化的每一位,这不太可能非常令人愉快:(

答案 2 :(得分:1)

return [data, data1]无效的C#语法。如果要将JSON数组返回给调用者,请使用JsonSerializer序列化数组并返回结果字符串。

答案 3 :(得分:1)

web方法就像常规方法一样,它只能返回一个值。

如果它的类型相同,则可以使用列表或数组。

如果它的类型不同,你可以创建一个持有数据的类

答案 4 :(得分:0)

我试过

 return jsonSerialize.Serialize(new { list1 = datalist1, list = datalist });

我可以轻松地从我的jQuery文件中收到这些内容。谢谢大家的支持