1

有人可以解释为什么在以下场景中“ONEController”返回 XML 而“TWOController”在从 ExtJs 以相同方式请求时返回 JSON?

MVC Web API 代码:

public class ONEController : ApiController
{
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}
public class TWOController : ApiController
{
    public thing<string> Get()
    {
        return new thing<string>(new string[] { "value1", "value2" });
    }
}
[System.Runtime.Serialization.DataContract]
public class thing<T>
{
    public thing(IEnumerable<T> stuff)
    {
        Id = 42;
        data = stuff;
    }
    [System.Runtime.Serialization.DataMember]
    public int Id { get; set; }
    [System.Runtime.Serialization.DataMember]
    public IEnumerable<T> data { get; set; }
}

ExtJs 控制器:

Ext.define('EPSS.controller.Things', {
extend: 'Ext.app.Controller',

views: [
    'Thing.Index'
],
stores: [
    'ONEs',
    'TWOs'
],

init: function () {
    console.log('controller init');
    this.control({
        'container > ThingIndex': {
            render: this.onPanelRendered
        }
    });
},

onPanelRendered: function () {
    console.log('index rendered');
    this.getONEsStore().load();
    this.getTWOsStore().load();
}
});

模型和商店看起来像这样(非常简单):

Ext.define('EPSS.store.ONEs', {
extend: 'Ext.data.Store',
model: 'EPSS.model.ONE'
});
Ext.define('EPSS.model.ONE', {
extend: 'Ext.data.Model',

fields: [
    'Id',
    'Details'
],
idProperty: 'Id',

proxy: {
    type: 'rest',
    url: '/api/ONE',
    reader: {
        type: 'json'
    }
}
});

我还不需要对这个示例数据做任何事情......我只是设置了一个简单的 ExtJs 索引视图,从 Home Index.cshtml 调用 ExtJs 应用程序,控制器在渲染时触发存储。在 firebug 控制台中,“TWO”将呈现一些不错的 JSON,而“ONE”将响应 XML 和未捕获的异常:“无法解析服务器返回的 JSON...”

4

0 回答 0