Kendo UIをMVC4に使用すると、Gridがあり、これがAjaxコントローラーへのデータの呼び出しを行います。
public ActionResult SearchUser_Read([DataSourceRequest]DataSourceRequest request)
{
var data = CreateAnExcaptionHere();
return Json(data.ToDataSourceResult(request));
}
この呼び出しを使用して、エラーがあったことをページに通知するにはどうすればよいですか?
サーバーからエラーメッセージを表示する必要がある場合は、Errorsプロパティのみを設定してDataSourceResultオブジェクトを返すことにより、エラーメッセージを表示できます。
_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.");
}
}
_
それを見つけたKendoは、JS関数を呼び出すDataSourceにEventを追加するだけでサポートします。それでおしまい。
.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>
Drewの答えを少しだけ拡張するために、通常、エラーが発生したときにもKendo Gridの変更をロールバックします。そうでない場合、たとえば、グリッドからアイテムを削除するときにエラーがスローされると、エラーがスローされてメッセージが表示された場合でも、アイテムは削除されたように見えます。
この関数は、エラーをスローしたデータソースを使用しているグリッドの変更もキャンセルします。
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.");
}
}
例外を発生させて、警告メッセージが表示されているかどうかを確認してください。
Kendoグリッドの場合、エラーイベントがあり、これが役立つ場合があります。
バインド中にエラーが発生した場合にアラートメッセージを自動的に表示するtelerik mvcグリッドを使用しました。
http://www.telerik.com/community/forums/aspnet-mvc/grid/exception-handling.aspx