Kendo: обработка ошибок в запросах данных Ajax
Использование Kendo UI в MVC4 У меня есть Сетка, которая делает Ajax вызов данных обратно в контроллер
public ActionResult SearchUser_Read([DataSourceRequest]DataSourceRequest request)
{
var data = CreateAnExcaptionHere();
return Json(data.ToDataSourceResult(request));
}
Как использовать этот вызов для информирования страницы о том, что произошла ошибка?
Ответы
Ответ 1
Если вам нужно отобразить сообщение об ошибке с сервера, вы можете сделать это, возвратив объект DataSourceResult с установленным свойством Errors:
return this.Json(new DataSourceResult
{
Errors = "my custom error"
});
И заберите его на клиенте, используя это (ссылка на строку .Events(events => events.Error("onError"))
):
function onError(e, status) {
if (e.status == "customerror") {
alert(e.errors);
}
else {
alert("Generic server error.");
}
}
Ответ 2
Найденный, Kendo поддерживает его, просто добавив Событие в DataSource для вызова функции JS. Что это.
.DataSource(dataSource => dataSource
.Ajax()
.Events(events => events.Error("onError"))
.Read(read => read.Action("SearchUser_Read", "Search").Data("parentModel"))
)
<script>
function onError(e, status) {
alert("A server error has occurred!");
}
</script>
Ответ 3
Чтобы продлить ответ Дрю только немного: мы обычно хотим отменить изменение в сетке Кендо также при возникновении ошибки. В противном случае, если ошибка возникает, поскольку элемент удаляется из сетки, например, он все равно будет удаляться, даже если ошибка была сброшена, и было показано сообщение.
Эта функция также отменяет изменения в любых сетках, которые используют источник данных, который запустил ошибку:
function onError(e, status) {
// Cancel changes on any grids on the page that are using this data source
$('.k-grid').each(function (item) {
var grid = $(this).data("kendoGrid");
if (e.sender === grid.dataSource) {
grid.cancelChanges();
}
});
if (e.status == "customerror") {
alert(e.errors);
}
else {
alert("Generic server error.");
}
}
Ответ 4
Попробуйте поднять исключение и проверить, запрашивает ли оно предупреждение или нет.
Для сетки Kendo есть событие ошибки, которое может быть полезно для вас.
http://docs.kendoui.com/documentation/getting-started/using-kendo-with/aspnet-mvc/migration/widgets/grid
Мы использовали сетки telerik mvc, которые автоматически отображают предупреждающие сообщения, если есть какая-либо ошибка при привязке.
http://www.telerik.com/community/forums/aspnet-mvc/grid/exception-handling.aspx
http://www.telerik.com/community/forums/aspnet-mvc/grid/how-to-do-error-handling-in-gridaction-methods.aspx
Ответ 5
Как насчет
throw new HttpResponseException(HttpStatusCode.BadRequest);