0

我有一个使用 ASP.NET Web API 实现的服务点。它返回一个列表,一个IEnumerable嵌入在 .dto 中的 dto HttpResponseMessage

但是,通过骨干集合获取实现的我的客户端代码总是以错误告终。在错误方法中,当我传递并观察参数时,我看到集合出现在ResponseText属性下。

虽然我直接通过IEnumerable<dto>而不用 包裹它HttpResponseMessage,但它工作正常。

我的问题:正确的方法是什么?如何让我的骨干集合引用内部ResponseText属性?

我尝试尝试获取单个模型,并覆盖 fetch 方法。

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;
    },

服务器端

HttpResponseMessage<IEnumerable<category>> httpresponse = null;

 var response= _catalogueservice.getcategories();

            if (response.success)
            {

                httpresponse =  new HttpResponseMessage<IEnumerable<category>>(response.categories, response.categories.Count()>0?HttpStatusCode.Found:HttpStatusCode.NotFound);
            }
            else
            {
                httpresponse = new HttpResponseMessage<IEnumerable<category>>( HttpStatusCode.NotFound);

            }

        return httpresponse;

我可以在 fiddler 下看到 JSON 正在返回。

4

1 回答 1

1

始终让您的服务保持简单。当您发现大多数 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"...}]}
于 2012-05-17T09:45:15.337 回答