技術問題過帳表單數據使用Ajax
欲形式數據發佈到異步使用AJAX的控制器的控制器的方法。以下是我的JavaScript的簡化視圖:
function SendForm() {
var formData = new FormData();
formData.append('value1', 'hello');
formData.append('value2', 'world');
var xhr = new XMLHttpRequest();
xhr.upload.onload = function() {
// stuff that happens on the callback
};
xhr.open('POST', 'http://server/controller/SomeAction', true);
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
xhr.send(formData);
}
問題始於所有方法參數爲空的服務器端。
[HttpPost]
public ContentResult SomeAction(string value1, string value2)
{
if(String.IsNullOrEmpty(value1) || String.IsNullOrEmpty(value2)) { throw new Exception("World not found."); }
return Content("something");
}
問題
我的問題是,爲什麼所有的方法參數的空?
額外的研究
我看了請求流裏面,我可以從長度看,有內容有,但不管是什麼原因MVC未能符合我在FORMDATA指定的參數反對控制器中的方法中的參數。
爲什麼我這樣做?
是的,我想POST數據。我簡化了這個例子,但是我想發佈更多的數據,而不是放在一個URL上,所以一個REST方法(在querystring上傳遞數據)對於這個解決方案是不可接受的。
你正在上傳文件嗎? –
是的,我會上傳一個文件。我使用formData.append('file',fileObject,fileObject.name),其中fileObject是從fileInputElement.files [0]中獲得的。在服務器端,我一直試圖使用HttpPostedFileBase來獲取文件。我還會發送一些特定於申請的補充參數。 –