![](/img/trans.png)
[英]MVC Ajax call to Controller Method with Parameter connects but Parameter value is null
[英]Parameter Data Null Ajax to MVC Controller
最初,我是通過Ajax將一個參數傳遞給我的MVC Controller,並且它可以正常工作。 接收參數數據沒有任何問題。 但是,我現在需要傳遞一個額外的參數,當我這樣做時,兩個參數都沒有向控制器發送數據嗎? 謝謝!
Ajax代碼:
function uploadFile() {
var fileData = new FormData($(form1)[0]); //THIS IS A FILE UPLOAD
var details = JSON.stringify(markers); //MARKERS IS AN ARRAY
$.ajax({
url: '../Home/FilePost',
type: 'Post',
success: function (result) {
var newWindow = window.open('LasView?fileName=' + result, "", "new window");
},
error: function (xhr, status, error) {
alert(xhr.responseText);
},
xhr: function () { // Custom XMLHttpRequest
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) { // Check if upload property exists
// TODO...
}
return myXhr;
},
error: function () { },
data: { filePost: fileData, googleMarkers: details },
cache: false,
contentType: false,
processData: false
});
}
我的控制器:
[HttpPost]
public string LasPost(HttpPostedFileBase filePost, string googleMarkers){
return something;
}
我的陣列:
var markerObject = {
lat: marker.position.lat(),
lng: marker.position.lng()
};
markers.push(markerObject);
您不能混合使用FormData
和對象。 您必須將每個名稱/值對.append()
到FormData
實例。
由於您已對數組進行了string googleMarkers
化,並且綁定到string googleMarkers
參數,因此您的代碼需要
function uploadFile() {
var fileData = new FormData($(form1)[0]); //THIS IS A FILE UPLOAD
var details = JSON.stringify(markers); //MARKERS IS AN ARRAY
fileData.append('googleMarkers', details); // append the name/value pair
$.ajax({
....
data: fileData, // send only the FormData instance
....
});
})
但是,您應該利用MVC的模型綁定功能並發布綁定到表示您的坐標的模型的數據,例如
public class Coordinate
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
然后POST方法將是
[HttpPost]
public string LasPost(HttpPostedFileBase filePost, IEnumerable<Coordinate> googleMarkers)
並發送該數據
var fileData = new FormData($(form1)[0]);
for(var i = 0; i < markers.length; i++)
{
fileData.append('[' + i + '].Latitude', markers[i].lat);
fileData.append('[' + i + '].Longitude', markers[i].lng);
}
$.ajax({
....
data: fileData,
....
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.