Javascript 如何使用angular FilterDescriptor的kendo ui在odata查询字符串中生成枚举比较
我有一个接受OData http查询的ASP WebApi OData v6项目 有没有办法使用剑道角度ui执行相等(eq)操作以匹配枚举?我的目标是填充将与方法一起使用的 问题是OData规范要求enum完全合格 例如: SomeField eq.My.Full.Quallified'EnumValue' (请注意,单引号仅放在枚举的实际值周围) 但是我找不到一种方法来描述放在过滤器描述符中的值不是作为字符串处理,而是作为枚举处理 筛选器描述符如下所示:Javascript 如何使用angular FilterDescriptor的kendo ui在odata查询字符串中生成枚举比较,javascript,typescript,asp.net-web-api,odata,kendo-ui-angular2,Javascript,Typescript,Asp.net Web Api,Odata,Kendo Ui Angular2,我有一个接受OData http查询的ASP WebApi OData v6项目 有没有办法使用剑道角度ui执行相等(eq)操作以匹配枚举?我的目标是填充将与方法一起使用的 问题是OData规范要求enum完全合格 例如: SomeField eq.My.Full.Quallified'EnumValue' (请注意,单引号仅放在枚举的实际值周围) 但是我找不到一种方法来描述放在过滤器描述符中的值不是作为字符串处理,而是作为枚举处理 筛选器描述符如下所示: const myFilterDescr
const myFilterDescriptor = <FilterDescriptor> {
field:'SomeField',
operator:'eq',
value:'My.Fully.Quallified.EnumValue'
};
常量myFilterDescriptor={
字段:'SomeField',
运算符:'eq',
值:'My.full.qualified.EnumValue'
};
毫不奇怪,此FilterDescriptor将生成以下不正确的odata文本:
SomeField eq“我的完全合格枚举值”
(单引号放错了位置)
另一种可能性是去掉odata段的枚举文本部分。我的意思是,如果不将文本传递给FilterDescriptor值,而只传递枚举数值,问题就会消失
i、 e:
const myFilterDescriptor = <FilterDescriptor> {
field:'SomeField',
operator:'eq',
value:123
};
常量myFilterDescriptor={
字段:'SomeField',
运算符:'eq',
价值:123
};
默认web api odata HttpConfiguration似乎不允许这样做。
我发现建议使用EnableEnumPrefixFree的建议在web api odata v6中似乎已经消失了。与WebApi相关的ODataV6建议使用一个自定义实现来模拟EnableEnumPrefixFree,但我没有使用它
因此,总而言之,如何轻松地在odata查询字符串中生成enum比较以及angular FilterDescriptor的剑道ui?使其按照所述工作,并且:
config.MapODataServiceRoute(
"odata",
"odata",
builder =>
builder.AddService(ServiceLifetime.Singleton, sp => GetEdmModel())
.AddService<IEnumerable<IODataRoutingConvention>>(ServiceLifetime.Singleton, sp =>
ODataRoutingConventions.CreateDefaultWithAttributeRouting("odata", config))
.AddService<ODataUriResolver>(ServiceLifetime.Singleton, sp => new StringAsEnumResolver()));
const myFilterDescriptor = <FilterDescriptor> {
field:'SomeField',
operator:'eq',
value:'EnumValue'
};