2010-07-20 2 views
0

Я уже давно использовал jqGrid без каких-либо проблем. Сегодня я попытался реализовать его в проекте ASP.NET MVC 2, и все было не так, как ожидалось.
После небольшой борьбы я понял, что теперь контроллеры не принимают вызовы GET при возврате данных JSON. Это по соображениям безопасности. Если я заставляю мой контроллер для поддержки GET - принуждая ответ JSON как это:jqGrid и POST-глагол

return(Json(value, JsonRequestBehavior.AllowGet)) 

... и указание

[AcceptVerbs(HttpVerbs.Get)] 

по методу

все работает отлично, и мои jqGrid шоу результаты. Я попытался изменить глагол jqGrid myType: 'POST' , но сетка перестает работать.
Я немного отлаживал и отслеживал, и кажется, что jqGrid никогда не отправляет запрос. Мой контроллер всегда получает GET.

Есть ли кто-нибудь, кто может мне помочь, пожалуйста.

Благодаря

Alberto

SAMPLE:

jQuery("#ProvincesDynamicGrid").jqGrid({ 
    url: '<%=Url.Action("Fetch", "Provinces")%>', 
    postData: { id: '0' }, 
    datatype: 'json', 
    myType: 'POST', 
    colNames: ['Descr', 'Prov', 'Regione'], 
    colModel: [{ name: 'Description', index: 'Description', editable: false, resizable: true, sortable: false, width: 200, align: 'right' }, 
       { name: 'Initial', index: 'Initial', editable: true, editrules: { required: true, custom: true, custom_func: ValidateInitialColum }, resizable: true, sortable: false, width: 90, align: 'right' }, 
       { name: 'RegionDescription', index: 'RegionDescription', editable: false, resizable: true, sortable: false, width: 200, align: 'right' } 
       ], 
    pager: $('#ProvincesDynamicPager'), 
    rowNum: 11, 
    // rowList: [10, 20, 50], 
    width: 748, 
    height: 253, 
    viewrecords: true, 
    shrinkToFit: false, 
    scroll: false, 
    rownumbers: true, 
    hidegrid: false, 
    caption: 'Gestione Province', 
    cellEdit: true, 
    cellsubmit: 'remote', 
    cellurl: '<%=Url.Action("SaveProvince", "Provinces")%>', 
    onSelectRow: function(id) { 
     SelectedRowId = id; 
    }, 
    beforeSaveCell: function(rowid, cellname, value, iRow, iCol) { 

    }, 
    afterSubmitCell: function(serverresponse, rowid, cellname, value, iRow, iCol) { 
     var resp = jQuery.parseJSON(serverresponse.responseText); 
     // if (resp.Status == false) 
     return ([resp.Status, resp.Message]) 
     //alert(resp.Message); 
    } 
}); 

ответ

1

Как Тони предложил в форуме jqGrid я mispelling в MTYPE параметр (MyType: 'POST') Так точный код будет следующим:

jQuery("#ProvincesDynamicGrid").jqGrid({ 
    url: '<%=Url.Action("Fetch", "Provinces")%>', 
    postData: { id: '0' }, 
    datatype: 'json', 
    mtype: 'POST', 
    colNames: ['Descr', 'Prov', 'Regione'], 
    colModel: [{ name: 'Description', index: 'Description', editable: false, resizable: true, sortable: false, width: 200, align: 'right' }, 
       { name: 'Initial', index: 'Initial', editable: true, editrules: { required: true, custom: true, custom_func: ValidateInitialColum }, resizable: true, sortable: false, width: 90, align: 'right' }, 
       { name: 'RegionDescription', index: 'RegionDescription', editable: false, resizable: true, sortable: false, width: 200, align: 'right' } 
       ], 
    pager: $('#ProvincesDynamicPager'), 
    rowNum: 11, 
... 

Теперь все работает нормально.