我继承了一些使用FluentValidation 3.0.0.1的代码,并且在我安装了.NET 4.5的机器上,我得到了可怕的System.Security.VerificationException : Operation could destabilize the runtime
错误。阅读本文后:http://elegantcode.com/2012/08/23/net-4-5-operation-could-destabilize-the-runtime-yikes/我将FluentValidation和FluentValidation.MVC3 nuget软件包更新到最新版本3.4.6.0。
但......更新后,此代码无法编译:
rules.RuleFor(x => x.Number).DisplayName("Bla bla bla"); // <-- No DisplayName method
失败是因为它在using FluentValidation.Mvc.MetadataExtensions
上进行了中继,并且这个命名空间在3.4.6.0版本的DLL中不存在
最新的FV中是否有MetadataExtensions
个等价物?如果没有,我如何使用最新3.4.6.0中的内容替换DisplayName
,Scaffold
,HiddenInput
和类似方法?
(我完全不熟悉FluentValidation - 因为VerificationException而偶然发现它)
答案 0 :(得分:0)
当您使用FluentValidation新版本时,您将不得不使用WithMessage而不是如下所示显示
RuleFor(x => x.city).NotNull().WithMessage("City is required");
答案 1 :(得分:0)
安装最新版本不是一个选项,但我已下载3.0.0.1 source并将change应用于AbstractValidator类。
// Func<CascadeMode> cascadeMode = () => ValidatorOptions.CascadeMode; // Deleted
static Func<CascadeMode> s_cascadeMode = () => ValidatorOptions.CascadeMode; // Added
Func<CascadeMode> cascadeMode = s_cascadeMode; // Added
使用修补版本应用程序替换原始3.0.0.1后,启动时没有VerificationException
。