我确实有这样的解决方案(而不是称之为黑客攻击)来做这个,但寻找优雅的问题解决方案。这是问题,请慢慢来看看
我在WebMethods
页面中获得了index.aspx
,其中发送了ajax(create
,update
,delete
)请求。 单个web方法无法处理所有这些操作,因此对于Person
模型,有3种方法,即
CreatePerson (attributes)
UpdatePerson (attributes)
DeletePerson(personId)
因此我使用如下的hacky进程,javascript函数名称对应于服务器上的相应方法
CreatePerson:function(){
model.url = "/CreatePerson";
},
UpdatePerson:function(){
model.url = "/UpdatePerson";
},
DeletePerson:function(){
model.url = "/DeletePerson";
}
上述方法在呈现Person模型的视图上声明。模型的urlRoot是index.aspx
因此当操作创建时,ajax调用将被路由到index.aspx中的 CreatePerson方法即 index.aspx / CreatePerson
如果我委托同步功能,它将覆盖js应用程序中的所有模型,我不想发生这种情况。
在使用带有asp.net页面的Backbone.js时,有没有我可以根据模型端点准备url之前的ajax请求?
答案 0 :(得分:4)
如果您有一个模型,或者如果您正在处理单个模型,则应该覆盖集合的sync
方法。然后根据它是否创建,更新或销毁相应地更改URL并调用Backbone同步进一步传递所有参数,同时设置正确的URL。
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(...)
}
});
我不是ASP程序员,但是不可能使用.NET的REST接口吗?让事情变得更容易:)