通过ExtJs 4的ASP.Net MVC4 Web API - 有时返回XML有时是JSON

时间:2012-04-25 15:36:48

标签: xml json extjs asp.net-mvc-4

有人可以解释为什么在下面的场景中,“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 ......”

0 个答案:

没有答案