在 MVC2 中使用 FluentValidation 与 Castle Windsor 和 Entity Framework 4.0 (POCO)

2024-01-21

这不是一个非常简单的问题,但希望有人遇到过。

我正在努力让以下事情协同工作:

  1. MVC2
  2. 流利验证
  3. 实体框架 4.0 (POCO)
  4. 温莎城堡

我几乎已经把一切都搞定了。我已经实现了 Castle Windsor,并使用由 WindsorControllerFactory(MVCContrib 的一部分)提供的控制器进行工作。我还让 Castle 提供 FluentValidation 验证器,如本文所述:http://www.jeremyskinner.co.uk/2010/02/22/using-fluidation-with-an-ioc-container/ http://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container/

当我尝试在视图上使用 Html.EditorForModel 或 EditorFor 时,我的问题出现了。当我尝试这样做时,我收到此错误消息:

没有支持服务 FluentValidation.IValidator`1[[System.Data.Entity.DynamicProxies.State_71C51A42554BA6C3CF05105DA05435AD209602C217FC4C34CA52ACEA2B06B99B,EntityFrameworkDynamicProxies-BrindleyInsurance.BusinessObjects,版本=1.0.0.0,文化的组件=中性,PublicKeyToken = null]]被发现

这是由于在 Entity Framework 4.0 上使用了 POCO 生成。在运行时,生成的类被动态代理包装,因此可以发生跟踪和延迟加载。显然,当使用 EditorForModel 或 EditorFor 时,它会尝试要求 Windsor 为动态代理类型而不是底层真实类型创建验证器。

有谁知道我可以做什么来解决这个问题?


我建议您编写自定义 FluentValidatorFactory ,它将为类代理返回正确的验证器类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MVC2 中使用 FluentValidation 与 Castle Windsor 和 Entity Framework 4.0 (POCO) 的相关文章

随机推荐