Помогите мне понять веб-методы? - PullRequest
3 голосов
/ 06 октября 2009

У меня есть метод на странице, помеченный тегами webmethod и scriptmethod ..

Метод возвращает коллекцию объектов в функцию jquery в виде данных JSON без каких-либо хлопот и без необходимости сериализации вручную.

Я сейчас пытаюсь воссоздать тот же метод, используя HTTPHandler, и мне было интересно, почему мне теперь нужно вручную сериализовать данные.

Что отличает веб-метод?

Ответы [ 3 ]

1 голос
/ 06 октября 2009

Поскольку обработчик HTTP (своего рода) находится над стеком ASP WebForms, вы несете полную ответственность за работу и вывод этого обработчика.

Вы можете использовать (почти) все, что сможете в рамках .NET Framework, но наверняка HTTPHandler будет более трудоемким, чем готовое решение, предоставляемое ASP.NET.

Обработчик страницы ASP.NET только один тип обработчика. ASP.NET поставляется с несколько других встроенных обработчиков, таких как в качестве обработчика веб-службы для .asmx файлы.

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

См. http://msdn.microsoft.com/en-us/library/ms227675(VS.85).aspx

0 голосов
/ 06 октября 2009

За меньшую работу: Переместите ваш метод в ASMX (веб-сервис): Вам будет полезна встроенная сериализация, предоставляемая ScriptService:

namespace WS{

  [System.web.Script.Services.ScriptService()] 
  [System.Web.Services.WebService(Namespace:="http://tempuri.org/")]
  public class WebService1 : System.Web.Services.WebService
  {
      [WebMethod]  
      public Person GetDummyPerson()
      {
          Person p = new Person();
          p.Name = "John Wayne";
          p.Age = 20;
      }

      [WebMethod] 
      public IList GetPersonsByAge(int age)
      {
          //do actual data retrieval
          List result = new List();
          result.add(new Person());
          result.add(new Person());
          return result; 
      }
  }

  class Person 
  {
      String Name;
      int Age;
  }

}

На стороне клиента:

WS.GetDummyPerson(function(p){
    alert(p.Name + "-->" + p.Age);
});

WS.GetPersonsByAge(10,function(list){
   for(var i=0;i<list.length;i++)
   {
      document.write(list[i].Name + "==>" + list[i].Age);
   }
});
0 голосов
/ 06 октября 2009

Веб-метод предоставляет вам соединение между вашим классом c # и файлом Js. В настоящее время использование Json - лучший способ получить возвращаемое сообщение в интеллектуальном формате для функции js или в любом месте файла js.

Привет

...