如何将使用GET返回的字符串添加到骨干模型?

时间:2014-07-23 21:23:59

标签: c# backbone.js asp.net-web-api2

我有这个ApiController只从表中返回一列。

public IEnumerable<string> GetEmailConfig()
{
    return dbContext.EmailConfig.Select(m => m.smtpHost).AsEnumerable();
}

我只需要返回smtpHost而不是数据库表中的其他字段。返回为 [smtp.host] 0:&#34; smtp.host&#34;

如何正确添加到我的骨干模型?目前,它出现在这样的属性中:

attributes: Object
0: "["
1: """
2: "s"
3: "m"
4: "t"
5: "p"
6: "."
7: "a"
8: "b"
9: "c"
10: "."
11: "d"
12: "e"
13: "f"
14: """
15: "]"

我想我必须序列化字符串,但不知道该怎么做或者问题是什么。有什么建议?

编辑: 我的模特

App.Models.EmailConfigModel = Backbone.Model.extend({
    parse: function(response, option)
    {
        var smtpHost = "";
        console.log('parsing smtp host');
        $.each(response, function (index, val) {

            smtpHost = smtpHost + val;
        });
        return { "smtpHost": smtpHost };
    }
});

我还尝试了return{"attributeName": smtpHost };,只是&#34;属性名称&#34;。没有工作。

这是我从索引页面获取的方式

App.emailconfig.fetch().then(function () {
    new App.Views.EmailConfig({ collection: App.emailconfig });
});

这是我的收藏:

App.Collections.EmailConfig = Backbone.Collection.extend({
    model: App.Models.EmailConfigModel,
    url: 'api/EmailConfig',

});

2 个答案:

答案 0 :(得分:1)

只要服务器返回模型的数据,在获取和保存中,就会调用

parse。该函数传递原始响应对象,并应返回要在模型上设置的属性哈希

所以在你的模型中写一个像

这样的解析函数
parse : function(response,option){
  var mystr = "";
    $.each($.parseJSON(response), function(index, val) {
             mystr = mystr + val;
        });
   return {"attributenmae" : mystr};
}

答案 1 :(得分:0)

编写一个返回对象{attributeName:stringReturnedFromService}

的解析方法