вернуть несколько строк из службы asmx - PullRequest
5 голосов
/ 05 декабря 2010

У меня есть метод веб-службы, который я хотел бы вернуть несколько строк из данных.

Я знаком с возвращением значений из методов веб-службы, но не с несколькими строками из данных. Каков наилучший способ сделать это? Нужно ли возвращать массив или list<>?

Мой метод кода настроен следующим образом.

[WebMethod]
public void UpdateBold(int count, float lat, float lng)
{
DataTable dt = new Gallery().DisplayNearestByLatLong(count, lat, lng);

// return code here
}

Ответы [ 2 ]

8 голосов
/ 05 декабря 2010

Вы можете создать новый тип для вашего элемента таблицы данных и вернуть массив этих данных

    public class sample
    {
        public string val1;
        public string val2;

    }
[WebMethod]
public sample[] UpdateBold(int count, float lat, float lng)

{

            DataTable dt = new Gallery().DisplayNearestByLatLong(count, lat, lng);
            var samples = new List<sample>();

            foreach(DataRow item in dt.Rows)
            {
                var s = new sample();
                s.val1 = item[0].ToString();
                s.val2 = item[1].ToString();
                samples.Add(s);
            }
            return samples.ToArray();
}

для Ajax:

для потребления см. http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/, но вы должны сделатьваш веб-сервис для сериализации JSON, см. http://msdn.microsoft.com/en-us/library/bb763183.aspx

6 голосов
/ 05 декабря 2010

Я бы вернул массив облегченных DTO.

Ex, DTO:

public class Example
{
    public string Name { get; set; }
    public int Value { get; set; }
}

И в вашем веб-сервисе:

[WebMethod]
public Example[] GetExamples()
{
      return new Example[]{
          new Example { Name = "Test", Value = 100 },
          new Example { Name = "Test 2", Value = 500 }
      };      
}
...