如何覆盖OData筛选器查询验证程序以允许模型中未定义的属性

如何覆盖OData筛选器查询验证程序以允许模型中未定义的属性,odata,Odata,我正在使用Asp.NET OData v7.0(Microsoft.AspNet.OData)。我想自定义过滤器验证器,以允许模型中未定义的属性 例如,我的模型定义如下: public Product { public string Name {get;set;} } 如果我在未定义的属性上进行筛选,则属性如下: $filter=标题等式“abc” 我将得到以下错误: Could not find a property named 'Title' on type 'xx...Model

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

例如,我的模型定义如下:

public Product
{
    public string Name {get;set;}
}
如果我在未定义的属性上进行筛选,则属性如下: $filter=标题等式“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(…)。我还覆盖了所有validatexxx方法,但没有一个方法被调用。

您能克服这个问题吗?