gpt4 book ai didi

javascript - 发生错误时,为什么我的数据源中的错误事件不会触发?

转载 作者:行者123 更新时间:2023-12-04 16:12:39 26 4
gpt4 key购买 nike

当 ModelState 出现错误时,我试图让我的 DonutChart 显示错误。但是,不会触发 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; }
}

Controller 工作并返回数据,在 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 的代码在同一个文件中,它们会被触发,因此可以访问脚本。

我在这里错过了什么吗?请帮忙!

提前致谢!

最佳答案

响应对象中包含错误的字段应在 DataSource 定义的架构中明确定义:

        .DataSource(dataSource => dataSource
.Custom()
.Type("aspnetmvc-ajax")
...
.Transport(transport => transport
.Read(read => read.Action("Get_KPI", "Data", new { dept = shortDept })
)
.Events(events => events
.Error("checkError")
)
.Schema(schema => schema
.Data("Data")
.Total("Total")
.Errors("Errors")
...
)
)

否则,默认字段称为 "errors" (小写“e”),但响应字段实际上是“错误”(大写“E”)。

更多关于自定义数据源的信息可以在 official docs 中找到。 .

关于javascript - 发生错误时,为什么我的数据源中的错误事件不会触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com