【问题标题】:Kendo DataSource Request serialize and deserialize is not workingKendo 数据源请求序列化和反序列化不起作用
【发布时间】:2019-01-16 06:16:48
【问题描述】:

为了向 webapi 发送 kendo 数据源请求,我已将 kendo dataSourcerequest 序列化为字符串,以在 webapi 中应用过滤和排序操作。但是当将字符串反序列化为 dataSourcerequest 时,我收到“预期令牌”错误

控制器:

public ActionResult GetGridData([DataSourceRequest] DataSourceRequest request)
{
      //converting object to string
      string jsonStr = JsonConvert.SerializeObject(request);
}

网络接口:

public ActionResult GetGridData(string request)
   {
        //converting string into object
        string jsonStr = JsonConvert.DeSerializeObject<DataSourceRequest>(request);
        //Here error is throwing as "Expected Token"
    }

数据源请求: { Page : 1, PageSize : 10, Sorts : [], filters : { [{ "value":"Accident Response Fee Laws","operator":"eq","field":"subTopic"}],"logic":"or"} }

【问题讨论】:

  • 你能发布请求字符串的内容和你的DataSourceRequest的结构吗?
  • @Thangadurai 请检查更新后的答案
  • 也发布您的 DataSourceRequest 课程。
  • 您的 JSON 内容看起来无效。末尾有一个额外的 }。
  • 那只是复制粘贴错误,DataSourceRequet 是剑道类

标签: c# kendo-asp.net-mvc


【解决方案1】:

目前 Telerik 不支持序列化 DataSourceRequest。这个类在类内部实现接口,防止类被序列化。

我能想到的最好的处理方法是创建一个自定义类,它将 DataSourceRequest 转换为自定义的 serialisabe 类。这还需要您包含一个将自定义类转换回 DataSourceRequest Telerik 类的函数。

目前有对此功能的请求。 请在此处投票以尝试让 Telerik 实现此功能: http://kendoui-feedback.telerik.com/forums/127393-kendo-ui-feedback/suggestions/17207828-serialization-support-of-datasourcerequest-and-app

【讨论】:

    【解决方案2】:

    只需将数据作为查询字符串传递

    在你的角度

    const queryStr = `${toDataSourceRequestString(gridState)}`;
     return this._http
          .post(`${url}?${queryStr}`)
    

    在你的 webapi 中

    using Kendo.Mvc.UI;
    using System.Web.Http.ModelBinding;
    public ActionResult GetGridData([ModelBinder(typeof(WebApiDataSourceRequestModelBinder))] DataSourceRequest request)
       {
       }
    

    【讨论】:

      猜你喜欢
      • 2013-04-23
      • 2020-10-16
      • 2012-09-18
      • 2020-05-12
      • 2012-07-11
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多