이 오류가 발생합니다.
JSON 요청이 너무 커서 직렬화 해제 할 수 없습니다.
이것이 발생하는 시나리오는 다음과 같습니다. 해당 국가의 배송 포트 목록을 보유한 국가 클래스가 있습니다.
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
public List<Port> Ports { get; set; }
}
클라이언트 측에서 KnockoutJS를 사용하여 계단식 드롭 다운을 만듭니다. 첫 번째는 국가이고 두 번째는 해당 국가의 항구입니다.
내 클라이언트 측 스크립트는 지금까지 모든 것이 잘 작동합니다.
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,
};
} ();
포트 가 많은 중국과 같은 국가를 선택하면 문제가 발생합니다 . 따라서 배열에 "중국"의 3-4 배가 있고 저장하기 위해 서버로 보내려고합니다. 오류가 발생했습니다.
이 문제를 해결하려면 어떻게해야합니까?
4
JsonValueProviderFactory.cs의 소스 코드를 살펴보십시오. ASP.NET MVC 팀은 의도적으로 1000을 제한 한 것처럼 보입니다.
—
nikib3ro