Asp.net mvc asp.net webapi主干获取()怪癖?
我正在使用ASP.NET web API实现一个服务点。它返回一个列表,一个嵌入在Asp.net mvc asp.net webapi主干获取()怪癖?,asp.net-mvc,backbone.js,httpresponse,Asp.net Mvc,Backbone.js,Httpresponse,我正在使用ASP.NET web API实现一个服务点。它返回一个列表,一个嵌入在HttpResponseMessage中的dto的IEnumerable 然而,通过主干集合获取实现的客户端代码总是以错误告终。在error方法中,当我传递并观察参数时,我看到集合出现在ResponseText属性下 虽然我直接传递IEnumerable,而不使用HttpResponseMessage包装它,但它工作正常 我的问题:正确的方法是什么?如何使主干集合引用ResponseText属性中的内容 我试着做一
HttpResponseMessage
中的dto的IEnumerable
然而,通过主干集合获取实现的客户端代码总是以错误告终。在error方法中,当我传递并观察参数时,我看到集合出现在ResponseText
属性下
虽然我直接传递IEnumerable
,而不使用HttpResponseMessage
包装它,但它工作正常
我的问题:正确的方法是什么?如何使主干集合引用ResponseText
属性中的内容
我试着做一个单一的模型获取,并重写获取方法
categories = new Categories({ url: 'http://localhost:6685/category' });
$.when(categories.fetch())
.then(
function() {
app.init({ 'categories': categories, 'cart': cart });
});
这总是让我犯模棱两可的错误。然后当我换了
categories.fetch({
success: function() {... },
error: function(err) {
console.log(err);
}
});
我可以在我的分类列表中看到错误。属性名称为responsetext
var Categories = Backbone.Collection.extend({
model: Category,
initialize: function (options) {
this.url = options.url;
},
parse:function (response) {
return response.categories;
},
服务器端
httpresponse消息httpresponse=null;
var response=_catalogeservice.getcategories();
if(response.success)
{
httpresponse=新的HttpResponseMessage(response.categories,response.categories.Count()>0?HttpStatusCode.Found:HttpStatusCode.NotFound);
}
其他的
{
httpresponse=新的HttpResponseMessage(HttpStatusCode.NotFound);
}
返回httpresponse;
我可以在fiddler下看到JSON正在被返回。始终保持服务的简洁性。当您发现大多数api用户仅仅因为方便而不得不使用另一个数据包装器时,您就陷入了噩梦。不管怎么说,把它放在一边,下面就是你要做的一切
var todos = Backbone.Collection.extend({
url:"todoapi/gettodos",
parse:function(response){
return response.Todos
}
});
考虑到您的回答,如下所示
{Error:"NULL",Todos:[{Id:1,Todo:"Welcome"},{Id:2,Todo:"Eat"...}]}
感谢您的建议,它应该是一个web服务点,假设httpresponsemessage在某个点上是一种通用格式,这是否正确。无论如何,由于fetch返回错误,解析方法永远不会被激发。我还缺什么吗?我正在使用httpstatuscode我是否应该在某处嵌入错误:显式为null?@mobygeek如果您在问题中包含一些代码,我将很容易给出正确答案。问题似乎是HttpStatus代码,Ajax对主干的请求总是期望
httpstatuscode。如果正确执行,则为非200状态代码。只需将代码更改为此httpresponse=newhttpresponsemessage(response.categories,response.categories.Count()>0?HttpStatusCode.OK:HttpStatusCode.NotFound)代码>
{Error:"NULL",Todos:[{Id:1,Todo:"Welcome"},{Id:2,Todo:"Eat"...}]}