Я пытаюсь заставить мой DonutChart показывать ошибку, когда есть ошибка в ModelState. Однако событие в DataSource.Events.Error не запускается. Я что-то здесь упускаю?
У меня есть cshtml-файл с диаграммой в нем:
@{ string shortDept = "OW"; }
@model IEnumerable<DonutValue>
@(Html.Kendo().Chart<DonutValue>()
.Name("Donut")
.DataSource(dataSource => dataSource
.Read(read => read
.Action("Get_KPI", "Data", new { dept = shortDept })
)
.Events(events => events
.Error("checkError")
)
)
.Series(series => { series
.Donut(
model => model.Value,
model => model.Description,
model => model.Color,
null
)
.HoleSize(50)
.Size(16)
.StartAngle(90);
})
.Events(events => events
.SeriesHover("onDonutSeriesHover")
.Render("onDonutRender")
)
)
Модель выглядит следующим образом:
public class DonutValue
{
public string Department { get; set; }
public decimal Value { get; set; }
public string Color { get; set; }
public string Description { get; set; }
}
Контроллер работает и возвращает данные с ошибкой в ModelState:
public class DataController : Controller
{
[HttpPost]
public JsonResult Get_KPI([DataSourceRequest] DataSourceRequest request, string dept)
{
ModelState.AddModelError("Error", "Testfoutmelding!");
KPIServicesClient client = new KPIServicesClient();
List<DonutChartValue> values = client.GetDonutChartValues() ?? new List<DonutChartValue>();
var data = values.FirstOrDefault(x => x.Department == dept);
var data2 = new DonutValue[] {
new DonutValue() {Value = data.CurrentSLA, Color = data.SLAColor, Description = $"Huidige SLA: {data.SLAShowValue}", Department = dept},
new DonutValue() {Value = data.PotentialPlusSLA, Color = data.PotentialSLAColor, Description = $"Potentiële SLA: {data.PotentialSLAShowValue}", Department = dept },
new DonutValue() {Value = data.LostSLA, Color = "#EFEFEF", Description = "", Department = dept}
};
return Json(data2.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
}
}
Функция JavaScript показывает только предупреждение для целей тестирования:
<script>
function checkError(e) {
alert("Error!");
}
</script>
Я убедился, что ошибка действительно возвращается в результате JSON:
https://imgur.com/AFacf99.
Код JavaScript для обработки ошибки находится в том же файле, что и код для обработки Render и SeriesHover, и они запускаются, поэтому сценарий может быть доступен.
Я что-то здесь упускаю? Пожалуйста, помогите!
Заранее спасибо!