我确实尝试使用角度2 kendo网格和odata v4进行服务器端过滤,但它显示'contains'关键字不支持。使用'substringof'而不是'contains'的新版本我该如何解决这个问题
答案 0 :(得分:0)
安装Odata V4并配置WebApiConfig.cs
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
var customer = builder.EntitySet<CustomerModel>("CustomerSearch");
config.Routes.MapODataServiceRoute(
routeName: "odata",
routePrefix: "odata",
model: builder.GetEdmModel());
'CustomerModel'是我要返回的模型 “CustomerSearch”控制器名称
Odata控制器
[EnableQuery]
public class CustomerSearchController : ODataController
{
[EnableQuery]
public IQueryable<CustomerModel> Get()
{
CustomerModelResponse list = new CustomerModelResponse();
try
{
list = CustomerBL.GetCustomer(0);
}
catch (Exception)
{
throw;
}
return list.CustomerList.AsQueryable();
}
}
答案 1 :(得分:0)
我们使用OData v3。
我所做的是如果它有一个contains()然后用substringof()
替换它的正则表达式以下是一个例子:
let queryString = toODataString(state);
const regex = /(contains(([^)]+)\)))/;
queryString = _.replace(queryString, regex, `substringof('${filter.value}', ${filter.field})`);
我在这里使用lodash,但我也应该使用string.replace函数