Pregunta

Tengo un par de soluciones (más bien llamarlos hacks) para hacer esto, pero busca soluciones elegantes al problema. Aquí está el problema, por favor revise lentamente

Obtuve WebMethods en el index.aspx página a la que Ajax (create,update,delete) Se envían solicitudes. A WebMethod único no puede manejar todo este tipo de operaciones, por lo tanto para un Person modelo hay 3 métodos a saber

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

Por lo tanto, estoy usando un proceso hacky como a continuación, los nombres de funciones de JavaScript corresponden al método respectivo en el servidor

CreatePerson:function(){

model.url = "/CreatePerson";

},
UpdatePerson:function(){

model.url = "/UpdatePerson";

},
DeletePerson:function(){

model.url = "/DeletePerson";

}

Los métodos anteriores se declaran en las opiniones que representan el modelo de persona. Urlroot para el modelo es index.aspx Por lo tanto, las llamadas de AJAX se enrutarán a Método Createperson Inside Index.aspx Cuando la operación se crea es decir index.aspx/createperson

Si delego a la función de sincronización, anulará para todos los modelos en la aplicación JS, que no quiero que suceda.

Pregunta

¿Hay alguna vez que pueda preparar la URL de acuerdo con el punto final de los modelos antes de que la solicitud AJAX se realice cuando se usa BackBone.js con Páginas ASP.NET?

¿Fue útil?

Solución

Deberías sobrescribir el sync Método de su colección si tiene uno o el modelo si está trabajando en un modelo único. Y luego, dependiendo de si se creó, actualiza o destruye el cambio de la URL en consecuencia y llame a la sincronización de la columna vertebral que pasa aún más los parámetros mientras se establece la URL correcta.

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

});

No soy un programador ASP, pero ¿no es posible tener una interfaz REST con .NET? hace las cosas mucho más fáciles :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top