如何重写OData筛选器查询验证器以允许未定义模型的属性

时间:2018-09-26 23:58:52

标签: odata

我正在使用Asp.NET OData v7.0(Microsoft.AspNet.OData)。我想自定义过滤器验证器,以允许模型中未定义的属性。

例如,我的模型定义为:

public Product
{
    public string Name {get;set;}
}

如果我在一个未定义的属性上进行过滤,如下所示: $ filter =标题eq'abc'

我将收到以下错误:

Could not find a property named 'Title' on type 'xx...Models.Product

是否可以重写FilterQueryValidator来忽略此错误?

我尝试覆盖ValidateSingleValuePropertyAccessNode:

public class MyFilterValidator : FilterQueryValidator
{
   public override void Validate(...)
   {
       base.Validate(...);
   }

   public override void ValidateSingleValuePropertyAccessNode(...)
   {
       // my customized code
   }       
} 

在我的控制器中:

queryOptions.Filter.Validator = new MyFilterValidator(new DefaultQuerySettings());
queryOptions.Filter.Validate(new ODataValidationSettings());

但是它不起作用。调试时,我看到了Validate(...)被调用,但是ValidateSingleValuePropertyAccessNode(...)从未被调用。我还重写了所有ValidateXXXX方法,但没有一个被调用。

0 个答案:

没有答案