Recibo este error:
La solicitud JSON era demasiado grande para ser deserializada.
Aquí hay un escenario donde esto ocurre. Tengo una clase de país que tiene una lista de puertos de envío de ese país.
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
public List<Port> Ports { get; set; }
}
Uso KnockoutJS en el lado del cliente para hacer un menú desplegable en cascada. Así que tenemos una serie de dos menús desplegables, donde el primero es el país y el segundo son los puertos de ese país.
Todo funciona bien hasta ahora, este es mi script del lado del cliente:
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,
};
} ();
El problema ocurre cuando se selecciona un país como China, que tiene muchos puertos. Entonces, si tiene 3 o 4 veces "China" en su matriz y quiero enviarlo al servidor para guardarlo. El error ocurre.
¿Qué debo hacer para remediar esto?