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
CreatePerson (attributes)UpdatePerson (attributes)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?
You should overwrite the
syncmethod 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.I’m not ASP programmer but isn’t it possible to have REST interface with .NET? makes things much easier 🙂