2017-05-11 1 views
0

J'ai un problème avec l'affichage des données de formulaire et un DataSourceRequest à ma méthode de commande via Ajax. Je suis capable de passer chaque objet individuellement mais quand j'essaye de passer les deux objets, mon DataSourceRequest est toujours nul.Comment envoyer des données sous forme DataSourceRequest et sérialisé au contrôleur MVC par appel AJAX

Voici mon code js:

function submitForm() { 

    var grid = $('#denialGrid').data('kendoGrid'); 

    parameterMap = grid.dataSource.transport.parameterMap; 

    var requestObject = parameterMap({ 
     sort: grid.dataSource.sort(), filter: grid.dataSource.filter(), group: grid.dataSource.group(), page: grid.dataSource.page(), 
     pageSize: grid.dataSource.pageSize() 
    }); 

    var formData = $('#BillingForm').serialize(); 
    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("SaveUpdate", "Home")', 
     data: {requestObject,formData}, 
     success: alert(JSON.stringify(requestObject)), 

    }) 
} 

Et voici ma méthode de commande

[HttpPost] 
    public ActionResult SaveUpdate([DataSourceRequest] DataSourceRequest request, UpdateViewModel vm) 
    { 

     return null; 
    } 

J'ai essayé:

data: {requestObject,formData}, 
data: [requestObject,formData], 
data: requestObject, formData, 
data: (requestObject,formData), 
data: {request: requestObject, vm: formData}, 

Toute aide serait grandement appréciée

+0

en double de [ce] (http://stackoverflow.com/questions/6085649/ajax-multiple-data) Question SO. –

+0

Je pense que le problème que je rencontre est spécifique au type de données DataSourceRequest, j'ai essayé toutes les approches de ce thread – BlkChxCode

Répondre

0

Vous devriez inclure de l'intérieur formData requestObject, et ne laisser passer que requestObject

var requestObject = parameterMap({ 
 
     sort: grid.dataSource.sort(), filter: grid.dataSource.filter(), group: grid.dataSource.group(), page: grid.dataSource.page(), 
 
     pageSize: grid.dataSource.pageSize(), formData: $('#BillingForm').serialize() 
 
    }); 
 

 
$.ajax({ 
 
    type: "POST", 
 
    url: '@Url.Action("SaveUpdate", "Home")', 
 
    data: requestObject, 
 
    success: alert(JSON.stringify(requestObject)), 
 

 
})

Et je pense serialize() ne retournera chaîne. Vous devez le convertir en objet. Ou vous pouvez essayer cette

[HttpPost] 
 
    public ActionResult SaveUpdate([DataSourceRequest] DataSourceRequest request, string formData) 
 
    { 
 

 
     return null; 
 
    }