Из коробки нет ничего, что могло бы обрабатывать смесь JSON (что в вашем случае недопустимо) и стандартных URL-закодированных параметров.Вам придется написать пользовательское связующее для моделей, если вам когда-нибудь понадобится обработать этот запрос.Или просто измените ваш запрос на:
{
"FavoriteAnimals": [
{
"Type": "Bear",
"Name": "Bruno"
},
{
"Type": "Shark",
"Name": "Sammy"
}
],
"FavoritePerson": "Dennis"
}
и затем на сервере:
public class MyViewModel
{
public string FavoritePerson { get; set; }
public FavoriteAnimalSubmission[] FavoriteAnimals { get; set; }
}
public class FavoriteAnimalSubmission
{
public string Type { get; set; }
public string Name { get; set; }
}
и действие вашего контроллера:
[HttpPost]
public MarkFavorites(MyViewModel model)
{
...
}
и запрос AJAX навызвать его:
var model =
{
"FavoriteAnimals": [
{
"Type": "Bear",
"Name": "Bruno"
},
{
"Type": "Shark",
"Name": "Sammy"
}
],
"FavoritePerson": "Dennis"
};
$.ajax({
url: '@Url.Action("MarkFavorites", "SomeController")',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(model),
success: function(result) {
// do something with the result
}
});