2017-05-11 58 views
0

我在通過Ajax向我的控制器方法發佈表單數據和DataSourceRequest時遇到問題。我能夠單獨傳遞每個對象,但是當我嘗試傳遞兩個對象時,我的DataSourceRequest始終爲空。如何通過AJAX調用將DataSourceRequest和序列化表單數據發送到MVC控制器

這裏是我的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)), 

    }) 
} 

這是我的控制器方法

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

     return null; 
    } 

我已經試過:

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

任何幫助,將不勝感激

+0

的重複[這](http://stackoverflow.com/questions/6085649/ajax-multiple-data)SO問題。 –

+0

我認爲我遇到的問題是特定於DataSourceRequest數據類型的東西,我已經嘗試了此線程上的所有方法 – BlkChxCode

回答

0

你應該包括德FORMDATA內requestObject,只有通過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)), 
 

 
})

而且我覺得連載()將只返回字符串。您需要將其轉換爲對象。或者你可以試試這個

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

 
     return null; 
 
    }

相關問題