Asp.net mvc asp.net webapi主干获取()怪癖?

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属性中的内容 我试着做一

我正在使用ASP.NET web API实现一个服务点。它返回一个列表,一个嵌入在
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"...}]}