Pergunta

I do have couple of solutions(rather call them hacks) for doing this but looking for elegant solutions to the problem. Here is the problem please go through it slowly

I got WebMethods in the index.aspx page to which ajax (create,update,delete) requests are sent. A single webmethod cannot handle all these kind of operations, hence for a Person model there are 3 methods namely

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

hence i am using a hacky process like below, the javascript function names correspond to the respective method's on the server

CreatePerson:function(){

model.url = "/CreatePerson";

},
UpdatePerson:function(){

model.url = "/UpdatePerson";

},
DeletePerson:function(){

model.url = "/DeletePerson";

}

above methods are declared on the views that render the Person model. urlRoot for the model is index.aspx hence the ajax calls will be routed to CreatePerson method inside index.aspx when operation is create i.e index.aspx/CreatePerson

If i delegate to Sync function it will override for all models in the js application, which i don't want to happen.

Question

Is there someway i can prepare the url according to the models endpoint before the ajax request are made when using Backbone.js with asp.net pages?

Foi útil?

Solução

You should overwrite the sync method of either your collection if you have one or the model if you are working on single model. And then depending on if it was create, update or destroy change the url accordingly and call the Backbone sync passing all the parameters further while having the right url set.

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(...)
    }

});

I'm not ASP programmer but isn't it possible to have REST interface with .NET? makes things much easier :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top