要向webapi发送kendo数据源请求,我已将kendo dataSourcerequest变为字符串,以便在webapi中应用过滤器和排序操作。但是当将字符串deseralizing到dataSourcerequest时,我得到的错误是“令人期待的”
控制器:
outline: none;
网址:
public ActionResult GetGridData([DataSourceRequest] DataSourceRequest request)
{
//converting object to string
string jsonStr = JsonConvert.SerializeObject(request);
}
DataSourceRequest:
public ActionResult GetGridData(string request)
{
//converting string into object
string jsonStr = JsonConvert.DeSerializeObject<DataSourceRequest>(request);
//Here error is throwing as "Expected Token"
}
答案 0 :(得分:0)
当前,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
答案 1 :(得分:0)
只需将数据作为查询字符串传递
以你的角度
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)
{
}