Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Kendo数据源请求序列化和反序列化无效_C#_Kendo Asp.net Mvc - Fatal编程技术网

C# Kendo数据源请求序列化和反序列化无效

C# Kendo数据源请求序列化和反序列化无效,c#,kendo-asp.net-mvc,C#,Kendo Asp.net Mvc,为了向webapi发送kendo数据源请求,我将kendo数据源请求序列化为字符串,以便在webapi中应用过滤和排序操作。但是当反序列化字符串到dataSourcerequest时,我得到的错误是“预期的令牌” 控制器: public ActionResult GetGridData([DataSourceRequest] DataSourceRequest request) { //converting object to string string jsonStr

为了向webapi发送kendo数据源请求,我将kendo数据源请求序列化为字符串,以便在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"
    }
Web api:

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"
    }
公共操作结果GetGridData(字符串请求) { //将字符串转换为对象 字符串jsonStr=JsonConvert.DeSerializeObject(请求); //此处错误作为“预期令牌”抛出 } 数据源请求:
{Page:1,PageSize:10,排序:[],过滤器:{[{“值”:“事故响应费用法”,“操作员”:“eq”,“字段”:“subTopic”}],“逻辑”:“或”}}}

目前Telerik不支持序列化数据源请求。此类在类内部实现接口,防止类被序列化

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

当前有此功能的请求。 请在此处投票,尝试让Telerik实现此功能:

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

以你的角度

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)
   {
   }

您可以发布请求字符串的内容和DataSourceRequest的结构吗。@Thangadurai请检查更新的应答,同时发布DataSourceRequest类。您的JSON内容看起来无效。最后有一个额外的}。这只是复制粘贴错误,DataSourceRequest是kendo类