【发布时间】:2015-08-24 13:13:41
【问题描述】:
我在 Kendo UI 中使用网格来显示实体列表。实体中的属性之一是枚举。我通过调用 OData 控制器使用 OData v4 从 MVC 5 应用程序填充网格。使用的 OData 库是 Microsoft.AspNet.Odata v5.6。这是网格数据源的定义方式:
type: "odata-v4",
transport: {
read: {
url: "/odata/Groups/",
dataType: "json"
}
},
而控制器的动作就这么简单
[Authorize]
[HttpGet]
[EnableQuery(PageSize = 20)]
public IQueryable<Group> GetGroups()
{
return _GroupService.GetGroups();
}
Group 实体定义为
public class Group
{
[Required(ErrorMessageResourceName = "FieldRequired", ErrorMessageResourceType = typeof(Resources.BusinessEntitiesResources))]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int ID { get; set; }
[Required(ErrorMessageResourceName = "FieldRequired", ErrorMessageResourceType = typeof(Resources.BusinessEntitiesResources))]
[StringLength(100)]
public string Name { get; set; }
public EnumDepositMethod? DepositMethod { get; set; }
}
现在,按 DepositMethod 列过滤不起作用。错误消息是关于无法比较枚举和字符串类型的值。这是发送到服务器的有效负载:
http://localhost:49680/odata/Groups?format=json&top=20&filter=DepositMethod+eq+DebitCard&count=true
据我所知,剑道网格生成的查询字符串无法更改,因此无法使用枚举的完全限定名称作为发送到服务器的值的前缀。有没有办法让 OData 将值解释为服务器端的枚举或让网格将“过滤依据”值正确地发送到服务器?
感谢您抽出宝贵时间阅读本文。
【问题讨论】:
标签: enums asp.net-mvc-5 kendo-grid odata filtering