Вызовите Asp.Net MVC action для загрузки магазина в сенсорном режиме Сенча - PullRequest
0 голосов
/ 01 апреля 2012

Я вызываю действие asp.net с прокси-сервера, чтобы заполнить данные магазина. Я правильно указываю URL, но при получении запроса get к действию он добавляет в строку параметры строки запроса. Это приводит к ошибке 404. Я публикую свой код ниже,

Asp.net mvc Action

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

Определение магазина в Sencha Touch 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 

Я предполагаю, что, поскольку у Action нет параметров, которые были сделаны моим вызовом ajax это приводит к ошибке 404. Я не уверен, правильный способ вызова действия MVC. Пожалуйста, дайте мне знать, если я иду не так. Любая помощь приветствуется.

обновление: Я попытался добавить те же самые параметры строки запроса в действие asp.net mvc. Тем не менее это вызывает ошибку 404. Когда я открываю тот же URL без каких-либо параметров строки запроса в новой вкладке, он возвращает мне результат Json.

1 Ответ

0 голосов
/ 02 апреля 2012

Я разобрался с проблемой.

Ошибка 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);
...