接口属性模型未验证

时间:2018-06-15 16:30:48

标签: c# .net validation asp.net-web-api interface

我有一个包含各种子对象的类:

public class ApplicationPayload
{
    public Quote Quote { get; set; }    
    public IApplication Application { get; set; }
    public DeliveryPreferences DeliveryPreferences { get; set; }
}

我有一个接受此模型的api控制器方法:

public async Task<IActionResult> LtdCompanyPost([FromBody] ApplicationPayload payload)
{
}

当提交到控制器方法时,实现IApplication的类中的属性未被验证(验证似乎被忽略),但是,其他对象(Quote / DeliveryPreferences)正在按预期进行验证。

是否可以让我的对象实现IApplication可验证,或者这种结构根本不适用于我?

(我测试了实现IApplication的对象,使它们与Quote / DeliveryPreferences处于同一级别,删除了接口实现,并且验证按预期工作,因此验证规则本身不是问题。)

有什么建议吗?如有必要,我可以举出更多例子。

1 个答案:

答案 0 :(得分:0)

我的猜测是你在transaction的下面检查中犯了错误,界面没有构造函数。

但更广泛地说,它如何知道要实例化的接口的实现?

ComplexModelBinder

https://github.com/aspnet/Mvc/blob/24eaa740f5b1736700d8d91053f60d690f4fc17e/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Binders/ComplexTypeModelBinder.cs#L366