У меня проблемы с $.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, когда я пытаюсь его.
// ---- EDIT ---- //
Я могу отправить данные, если я инкапсулировать его в JSon объекта:
$("#activatebutton").click(function() {
var url = api_url + "Files?request=Activate&auto=false";
var fileList = ["this", "is", "a", "test"];
$.post(url, { fileList: fileList});
});
и это требование:
Что произойдет, если вы передадите файлList напрямую, не обернув его в postData? $ .post (url, $ .param (fileList, true)); – swestfall
Попробуйте указать «традиционный» для коллекции «* мелкой». Просто '$ .param (postData)'. –
нет ... еще ничего на другой стороне. – AntoineLev