首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3.4.6.0中没有FluentValidation.Mvc.MetadataExtensions (避免System.Security.VerificationException)

3.4.6.0中没有FluentValidation.Mvc.MetadataExtensions (避免System.Security.VerificationException)
EN

Stack Overflow用户
提问于 2013-01-07 11:53:15
回答 2查看 198关注 0票数 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。

但是..。更新后,此代码不会编译:

代码语言:javascript
复制
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版本取代DisplayNameScaffoldHiddenInput和类似的方法?

(我对FluentValidation完全陌生--只是偶然发现的,因为VerificationException)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-14 10:48:49

安装最新版本不是一种选择,但我已经下载了3.0.0.1源并将变化应用于AbstractValidator类。

代码语言:javascript
复制
// 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的情况下启动。

票数 0
EN

Stack Overflow用户

发布于 2013-01-09 11:31:04

由于您使用的是FluentValidation新版本,所以您必须使用WithMessage而不是像下面这样显示

代码语言:javascript
复制
 RuleFor(x => x.city).NotNull().WithMessage("City is required"); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14195387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档