2016-03-10 33 views
2

我正在爲ASP.NET MVC使用Kendo UI圖表,並且正在向其提供一個數據傳輸對象列表,以便通過Ajax請求填充數據。但問題在於列表的大小。我有大約3900 DTOS這個列表中(因爲它是從文件中解析),並有各自的DTO內9個對象:Ajax請求ASP.NET MVC應用與大數據源的劍道圖?

public DateTime Time { get; set; } 

public int BeatsPerMinute { get; set; } 

public double Speed { get; set; } 

public int Cadence { get; set; } 

public double? Altitude { get; set; } 

public int Power { get; set; } 

public int? PowerBalance { get; set; } 

public double Distance { get; set; } 

我要求每個DTO內的所有物品,但是當我把AJAX請求我的瀏覽器timesout。我已經將我的web.config jsonSerialization maxJsonLength設置爲50000000,但是這沒有奏效。

對此有何建議?

回答

0

因此,原來這不是我的服務或JSON導致該問題,當我通過代碼加強,一切都很好。這似乎是我在填充Kendo UI圖表時,一次嘗試在頁面上呈現23400個DOM元素的事實。通過禁用dto中的每個項目的繪圖(不包括電源平衡)並僅顯示線條,我就保存了19500個DOM元素的加載。

series.Line(a => a.BeatsPerMinute).Markers(c => c.Visible(false)); 
series.Line(a => a.Altitude).Markers(c => c.Visible(false)); 
series.Line(a => a.Cadence).Markers(c => c.Visible(false)); 
series.Line(a => a.Power).Markers(c => c.Visible(false)); 
series.Line(a => a.Speed).Markers(c => c.Visible(false)); 

然後是DateTime。列表中有3900個dtos,這意味着我在圖表中呈現了3900個DateTime值。通過提供一個30步(在我的情況下,每個DateTime值相差30秒),我將幾乎所有剩餘的3900個對象加載。

.CategoryAxis(axis => axis 
.Categories(a => a.Time) 
.Labels(l => l.Rotation(-90) 
.Step(30)) 
0

如果使用asp.net mvc 3.0,它會忽略web.config中的maxJsonLength。使用在控制器:

return new JsonResult { Data = Result, MaxJsonLength = Int32.MaxValue }; 
+0

謝謝。看起來設置MaxJsonLength並沒有幫助。我的頁面仍然無響應。 – nogalskis

+0

如果json長度存在問題,則會出現錯誤消息。似乎控制器操作超時。嘗試設置斷點。計算結果需要多長時間? –