我在$.post()
和我的mvc控制器上遇到了一些麻煩。Jquery Ajax和asp.net mvc控制器
我已經嘗試了幾個例子在網絡上和堆棧溢出這樣的:How can I post an array of string to ASP.NET MVC Controller without a form?
但沒有成功。我只是想字符串數組傳遞給我的控制器:
[HttpPost]
public HttpResponseMessage Post([FromBody]List<string> idList, string request, bool auto)
{
LogHelper.Log(Severity.Info, "Just entered in POST api/files");
var fileList = new List<string>();
switch (request)
{
case "Activate":
fileList = auto ? _bendingsServies.GetBendigsToCome() : idList;
_filesServices.Activate(fileList);
break;
case "Archive":
fileList = auto ? _filesServices.GetFilesToArchive() : idList;
_filesServices.Archive(fileList);
break;
default:
return ControllerContext.Request.CreateResponse(HttpStatusCode.BadRequest);
break;
}
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK);
}
和我的jQuery:
@using System.Configuration
var api_url = "@ConfigurationManager.AppSettings["apiUrl"]";
$(document).ready(function() {
// ---- Ajax calls ---- //
$("#archivebutton").click(function() {
var url = api_url + "Files?request=Archive&auto=false";
var fileList = ["10", "14", "12"];
var postData = { idList: fileList }
$.post(url, $.param(postData,true));
});
});
隨着我什麼都試過,在idList
總是包含0的元素,當我嘗試它。
// ---- ----編輯//
我可以,如果我將其封裝在一個JSON對象發送數據:
$("#activatebutton").click(function() {
var url = api_url + "Files?request=Activate&auto=false";
var fileList = ["this", "is", "a", "test"];
$.post(url, { fileList: fileList});
});
,這是要求:
如果直接傳遞fileList而不將其包裝在postData中會發生什麼? $ .post(url,$ .param(fileList,true)); – swestfall
嘗試不指定「傳統」爲「*淺*」集合。只需要'.param(postData)'。 –
不...還是沒有在另一邊。 – AntoineLev