Frage

Ich habe ein paar Lösungen (eher nenne sie Hacks) dafür, suche aber nach eleganten Lösungen für das Problem. Hier ist das Problem, bitte gehen Sie es langsam durch

ich habe WebMethods in dem index.aspx Seite, auf die ajax (create,update,delete) Anfragen werden gesendet. EIN Single WebMethod kann nicht alle diese Art von Vorgängen verarbeiten, daher für a Person Modell Es gibt 3 Methoden nämlich nämlich

  1. CreatePerson (attributes)
  2. UpdatePerson (attributes)
  3. DeletePerson(personId)

Daher verwende ich einen hackigen Prozess wie unten, die JavaScript -Funktionsnamen entsprechen den jeweiligen Methoden auf dem Server

CreatePerson:function(){

model.url = "/CreatePerson";

},
UpdatePerson:function(){

model.url = "/UpdatePerson";

},
DeletePerson:function(){

model.url = "/DeletePerson";

}

Die oben genannten Methoden werden in den Ansichten deklariert, die das Personmodell machen. Urlroot für das Modell ist index.aspx Daher werden die AJAX -Anrufe aufgeleitet CreatePerson -Methode in index.aspx Wenn der Betrieb erstellt wird dh index.aspx/createPerson

Wenn ich die Funktion delegiere, wird sie für alle Modelle in der JS -Anwendung überschreiben, was ich nicht aufnehmen möchte.

Frage

Gibt es irgendwie, dass ich die URL gemäß dem Modelsendpunkt vorbereiten kann, bevor die AJAX -Anforderung gestellt wird, wenn Backbone.js mit ASP.NET -Seiten verwendet wird?

War es hilfreich?

Lösung

Sie sollten die überschreiben sync Methode Ihrer Sammlung, wenn Sie eins oder das Modell haben, wenn Sie an einem einzelnen Modell arbeiten. Und dann, je nachdem, ob es erstellt, aktualisiert oder zerstören, ändern Sie die URL entsprechend und rufen Sie die Backbone -Synchronisation an, die alle Parameter weiter übergeben, während die richtige URL festgelegt ist.

var Model = Backbone.Model.extend({

    ...

    sync: function(method, model, options) {

      // here method param can be either "read", "create", "update", "destroy"
      // set your url based on its value

      Backbone.sync.call(this, method, this, options); 
      // if your super class had custom sync as well you'd have to call 
      // Model.__super__.sync.call(...)
    }

});

Ich bin kein ASP -Programmierer, aber ist es nicht möglich, eine Ruheschnittstelle mit .NET zu haben? macht die Dinge viel einfacher :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top