Zaczynam od WebAPI i w większości przypadków wszystko idzie dobrze. Występuje problem z jedną konkretną funkcją. Ten różni się od drugiego, ponieważ jego jedynym parametrem jest typ IEnumerable.Przekazywanie parametru IEnumerable do WebAPI
Ustawiłem punkt przerwania w pierwszym wierszu funkcji Post() i wybieram funkcję, ale parametr "wartości" ZAWSZE ma wartość 0. Zweryfikowałem, że parametr jest wprowadzany do klienta strona faktycznie zawiera tablicę liczb całkowitych. Po usunięciu atrybutu [FromUri] parametr "values" ma wartość NULL zamiast wartości 0.
Jak uzyskać tablicę liczb całkowitych do przejścia przez moją funkcję WebAPI?
Oto funkcja WebAPI:
[System.Web.Mvc.HttpPost]
public void Post([FromUri] IEnumerable<int> values)
{
if (values == null || !values.Any()) return;
int sortorder = 1;
foreach (int photoId in values)
{
_horseRepository.UpdateSortOrder(photoId, sortorder);
sortorder++;
}
}
Oto wywołanie AJAX (jest to za pomocą funkcji jQuery UI sortable):
$(".sortable").sortable({
update: function (event, ui) {
var newArray = $(".sortable").sortable("toArray");
$.ajax({
url: '/api/photo',
type: 'POST',
contentType: 'application/json, charset=utf-8',
async: true,
dataType: 'json',
data: JSON.stringify(newArray),
complete: function (data) { }
});
}
});
Dane to było coś tak głupiego jak przecinek, który powinien być średnikiem (kod pierwotnie został napisany bez [F] romUri], który został dodany jako część moich prób debugowania). Dzięki! – Scott
@Darin Możliwe jest wyodrębnienie parametrów URI z żądania POST; Jest to tylko ten przypadek użycia, który powinien pochodzić z ciała, tj. Z publicznych pustych wpisów ([FromBody] IEnumerable wartości). –