3 Stimmen

Helfen Sie mir, Webmethoden zu verstehen?

Ich habe eine Methode auf einer Seite mit den Tags webmethod und scriptmethod markiert.

Die Methode liefert eine Sammlung von Objekten an eine Jquery-Funktion als JSON-Daten ohne Probleme und ohne dass ich sie manuell serialisieren muss.

Ich versuche jetzt, dieselbe Methode mit einem HTTPHandler neu zu erstellen und frage mich, warum ich die Daten jetzt manuell serialisieren muss.

Was macht die Webmethodik anders?

1voto

Greg B Punkte 14140

Da ein HTTP-Handler (gewissermaßen) über dem ASP WebForms Stack sitzt, sind Sie vollständig für die Funktionsweise und die Ausgabe des Handlers verantwortlich.

Sie können (fast) alles verwenden, was Sie innerhalb des .NET-Frameworks in die Finger bekommen, aber ein HTTPHandler wird mit Sicherheit mehr Arbeit machen als eine von ASP.NET bereitgestellte Standardlösung.

Der ASP.NET-Seitenhandler ist nur ein Typ von Handler. ASP.NET kommt mit mehrere andere integrierte Handler wie wie der Webdienst-Handler für .asmx Dateien.

Sie können eigene HTTP-Handler erstellen erstellen, wenn Sie eine spezielle Behandlung wünschen, die Sie anhand von Dateinamenerweiterungen Erweiterungen in Ihrer Anwendung

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

0voto

Bilgin Kılıç Punkte 7779

Web-Methode bietet Ihnen eine Verbindung zwischen Ihrer c#-Klasse und Js-Datei. Heutzutage mit Json ist ein bester Weg, um die Rückmeldung in einem intelligenten Format für eine Js-Funktion oder überall in Js-Datei zu erhalten.

Mit freundlichen Grüßen

0voto

jerjer Punkte 8584

Für geringere Arbeiten: Verschieben Sie Ihre Methode in einen ASMX (Web Service): Sie profitieren von der eingebauten Serialisierung, die der ScriptService bietet:

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

}

Auf der Kundenseite:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X