我正在使用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方法,但没有一个被调用。