2012-04-01 74 views
0

我从代理调用asp.net操作来填充商店数据。 我正确地指定了网址,但在获取Action请求后,它将查询字符串params附加到该调用。这导致了404错误。 我张贴下面我的代码,调用Asp.Net MVC操作以sencha触摸加载商店

Asp.net MVC行动

public JsonResult SongsList() 
{ 
     List<MusicFileModel> musicFileModels = MusicFileModel.GetAllMusicFiles(); 
     return Json(musicFileModels, JsonRequestBehavior.AllowGet); 
} 

商店定义煎茶触摸2

Ext.define('CloudPlayerUI.store.Songs', { 
extend: 'Ext.data.Store', 
config: { 
    model:'CloudPlayerUI.model.song', 
    proxy: { 
     type: 'ajax', 
     url: '/Home/SongsList', 
     param:'', 
     reader: { 
      type: 'json' 
     } 
    }, 
    autoLoad:true 
} 
}); 

这是Ajax调用就是这样做的。

GET http://localhost/Home/SongsList?_dc=1333338051329&page=1&start=0&limit=25 

我假设,因为,行动不具有正在取得我的Ajax调用 它导致一个404错误任何PARAMS。 我不确定调用mvc动作的正确方法。请让我知道如果我出错了。 任何帮助表示赞赏。

更新: 我尝试添加相同的查询字符串params到asp.net mvc行动。它仍然导致404错误。当我在新选项卡中打开没有任何查询字符串参数的相同url时,它将返回Json结果。

+0

你的意思'GET' PARAMS由煎茶触摸附加到AJAX调用?为什么会导致404错误? – Jay 2012-04-01 23:39:30

+0

我更新了我的问题。 – mehul9595 2012-04-02 03:48:41

+0

看起来像纯粹的ASP.net问题。不确定ST2与它有什么关系。 – Jay 2012-04-02 04:41:50

回答

0

我想出了这个问题。

404错误是由于商店中定义的URL配置参数不正确导致的。另外我还向读者添加了一个rootProperty。 这就是代理代码的样子。

Ext.define('CloudPlayerUI.store.Songs', { 
extend: 'Ext.data.Store', 
config: { 
    model:'CloudPlayerUI.model.song', 
    proxy: { 
     url: 'Home/SongsList', //Changes to url 
     type:'ajax', 
     reader: { 
      type: 'json', 
      rootProperty: 'ResponseData' //Addeed reader property. 
     } 
    }, 
    autoLoad:true } 
}); 

构建在Asp.MVC行动回报对象。

var results = new 
          { 
           Success = true, 
           ResponseData = musicFileModels 
          }; 
     return Json(results, JsonRequestBehavior.AllowGet);