Kendo ui 剑道UI-如何使用剑道网格在WEB API、非MVC上实现错误处理

Kendo ui 剑道UI-如何使用剑道网格在WEB API、非MVC上实现错误处理,kendo-ui,Kendo Ui,我的方案是创建一个返回Active Directory对象的Web API 我有这个WEB API函数创建Active Directory用户,并创建一个返回Active Directory对象的用户,该对象包含名字、姓氏、电子邮件、用户名等。。。如果它出错了怎么办?我该怎么处理 我正在使用剑道网格内联编辑 我想将错误消息显示为弹出窗口 我该怎么做 选择权 尝试捕获错误并将Active Directory对象作为 例外 我怎样才能捕捉到这个剑道界面 抛出响应并获取错误消息,并将其显示在剑道网

我的方案是创建一个返回Active Directory对象的Web API

我有这个WEB API函数创建Active Directory用户,并创建一个返回Active Directory对象的用户,该对象包含
名字、姓氏、电子邮件、用户名等。
。。如果它出错了怎么办?我该怎么处理

我正在使用剑道网格内联编辑
我想将错误消息显示为弹出窗口

我该怎么做

选择权

  • 尝试捕获错误并将Active Directory对象作为 例外

    • 我怎样才能捕捉到这个剑道界面
  • 抛出响应并获取错误消息,并将其显示在剑道网格中

    //HttpResponseMessage msg=新的HttpResponseMessage(HttpStatusCode.OK) //{ //Content=newstringcontent(string.Format(“没有ID为{0}.{1}”、businessObject.UserName、ex.InnerException.ToString())的用户), //ReasonPhrase=“在数据库中找不到CustomerID!” //}; //抛出新的HttpResponseException(msg)

  • 谢谢,
    MarcLevin

    每当KendoUI通过Ajax绑定时,它都依赖于json响应中发送的ModelState的序列化版本。基本上,如果ModelState无效,则返回到小部件(本例中为网格)的json响应将包含如下内容:

    {
      "Errors":{
         "PropA":{
            "errors":[
               "Error1",
        "Error2"
            ]
         },
         "PropB":{
            "errors":[
               "FUBAR"
            ]
         }
      }
    }
    

    基本上,如果希望网格响应,您的WebAPI将需要返回类似的数据结构。

    这与您的选项2有关。您需要将以下内容正确应用于您的特定场景。这只是响应的一个非常简单的解析示例,并在检测到错误时显示警报。此示例需要一个包含项目数组的JSON对象。一旦你有了基本的想法,你肯定可以应用更先进的处理

        $("#grid").kendoGrid({
                    dataSource: {
                        schema: {
                            data: function(data) {
                                if (data.Items[0].substring(0,37) == "allmyerrormessagesstartwiththisphrase"){
                                alert(data.Items[0];
                                } else {
                                    return data.Items;
                                }
                            }
                        },
                        transport: {
                            read: "http://myurl.com/something/"
                        }
                    }
                }
            );
    
        $("#grid").kendoGrid({
                    dataSource: {
                        schema: {
                            data: function(data) {
                                if (data.Items[0].substring(0,37) == "allmyerrormessagesstartwiththisphrase"){
                                alert(data.Items[0];
                                } else {
                                    return data.Items;
                                }
                            }
                        },
                        transport: {
                            read: "http://myurl.com/something/"
                        }
                    }
                }
            );