Je reçois cette erreur:
La demande JSON était trop volumineuse pour être désérialisée.
Voici un scénario où cela se produit. J'ai une classe de pays qui détient une liste des ports d'expédition de ce pays
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
public List<Port> Ports { get; set; }
}
J'utilise KnockoutJS du côté client pour faire une liste déroulante en cascade. Nous avons donc un éventail de deux listes déroulantes, la première étant le pays et la seconde les ports de ce pays.
Tout fonctionne bien jusqu'à présent, ce script côté client:
var k1 = k1 || {};
$(document).ready(function () {
k1.MarketInfoItem = function (removeable) {
var self = this;
self.CountryOfLoadingId = ko.observable();
self.PortOfLoadingId = ko.observable();
self.CountryOfDestinationId = ko.observable();
self.PortOfDestinationId = ko.observable();
};
k1.viewModel = function () {
var marketInfoItems = ko.observableArray([]),
countries = ko.observableArray([]),
saveMarketInfo = function () {
var jsonData = ko.toJSON(marketInfoItems);
$.ajax({
url: 'SaveMarketInfos',
type: "POST",
data: jsonData,
datatype: "json",
contentType: "application/json charset=utf-8",
success: function (data) {
if (data) {
window.location.href = "Fin";
} else {
alert("Can not save your market information now!");
}
},
error: function (data) { alert("Can not save your contacts now!"); }
});
},
loadData = function () {
$.getJSON('../api/ListService/GetCountriesWithPorts', function (data) {
countries(data);
});
};
return {
MarketInfoItems: marketInfoItems,
Countries: countries,
LoadData: loadData,
SaveMarketInfo: saveMarketInfo,
};
} ();
Le problème se produit lorsqu'un pays comme la Chine est sélectionné, qui possède de nombreux ports. Donc, si vous avez 3 ou 4 fois "Chine" dans votre baie et que je veux l'envoyer au serveur pour l'enregistrer. L'erreur se produit.
Que dois-je faire pour y remédier?