0

我继承了一些使用 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 中不存在

MetadataExtensions最新的 FV 中是否有一些等价物?如果没有,我如何用最新的 3.4.6.0 中的方法替换 、 和类似DisplayName方法ScaffoldHiddenInput

(我对 FluentValidation 完全陌生——只是因为 VerificationException 而偶然发现它)

4

2 回答 2

0

由于您使用的是 FluentValidation 新版本,因此您必须使用 WithMessage 而不是如下所示的显示

 RuleFor(x => x.city).NotNull().WithMessage("City is required"); 
于 2013-01-09T11:31:04.817 回答
0

安装最新版本不是一种选择,但我已经下载了3.0.0.1 源并将更改应用于 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.

于 2013-01-14T10:48:49.490 回答