我在NancyFX应用程序中使用Fluent验证。 使用nuget包安装: Nancy.Validation.FluentValidation

我编写了自己的属性Validator类,并完成了错误消息的本地化,可以通过Strings.invalid_ip属性获取。

所有其他本地化在我的项目中工作正常,Fluent验证除外,它无法在Strings资源管理器类中找到任何属性。

namespace LmsNg.Validators
{
    public class IsIpAddressValidator : PropertyValidator
    {
        public IsIpAddressValidator()
            : base(() => Strings.invalid_ip)

            //also tried another overload, but the same exception happens
            //base("invalid_ip", typeof(Strings))
        {
        }

        protected override bool IsValid(PropertyValidatorContext context)
        {
            var ip = context.PropertyValue as string;
            IPAddress address;

            if (ip != null && IPAddress.TryParse(ip, out address))
            {
                return true;
            }

            return false;
        }
    }
}

文件属性

一旦使用了IsIpAddressValidator ,当验证返回false时,我得到一个异常。

FluentValidation.dll中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理

System.InvalidOperationExcepction: Could not find a property named 'invalid_ip' on type 'LmsNg.Resources.Strings'.

堆栈跟踪:

   at FluentValidation.Resources.StaticResourceAccessorBuilder.GetResourceAccessor(Type resourceType, String resourceName) in c:\Projects\FluentValidation\src\FluentValidation\Resources\IResourceAccessorBuilder.cs:line 29
   at FluentValidation.Resources.LocalizedStringSource..ctor(Type resourceType, String resourceName, IResourceAccessorBuilder resourceAccessorBuilder) in c:\Projects\FluentValidation\src\FluentValidation\Resources\LocalizedStringSource.cs:line 42
   at FluentValidation.Resources.LocalizedStringSource.CreateFromExpression(Expression`1 expression, IResourceAccessorBuilder resourceProviderSelectionStrategy) in c:\Projects\FluentValidation\src\FluentValidation\Resources\LocalizedStringSource.cs:line 66
   at FluentValidation.Validators.PropertyValidator..ctor(Expression`1 errorMessageResourceSelector) in c:\Projects\FluentValidation\src\FluentValidation\Validators\PropertyValidator.cs:line 54
   at LmsNg.Validators.IsIpAddressValidator..ctor() in d:\WorkSpace\VisualStudio\LmsNg\LmsNg\Validators\IsIpAddressValidator.cs:line 16
   at LmsNg.Modules.Networks.NetworkValidator..ctor() in d:\WorkSpace\VisualStudio\LmsNg\LmsNg\Modules\Networks\NetworkValidator.cs:line 16
   at lambda_method(Closure , Object[] )
   at Nancy.TinyIoc.TinyIoCContainer.ConstructType(Type requestedType, Type implementationType, ConstructorInfo constructor, NamedParameterOverloads parameters, ResolveOptions options)

我的.resx文件的Build Action是否不正确? 我尝试了几个组合,但仍然会发生同样的错误。

谢谢。

#1楼 票数:5 已采纳

因此,默认情况下, .resx文件会生成包含类/字段上的internal修饰符的.cs文件。

这意味着无法从不同的程序集访问这些程序集,在本例中为FluentValidation.dll

在属性窗格中更改每个.resx文件的Custom Tool

from: ResXFileCodeGeneratorPublicResXFileCodeGenerator

帮助解决了这个问题,因为现在生成的代码包含一个public修饰符而不是internal修饰符。

  ask by zyash translate from so

未解决问题?本站智能推荐:

1回复

Nancyfx,Ninject和Fluent验证

我正在使用Nancyfx,Ninject和FluentValidation来服务由angularjs驱动的网站。 一切工作正常,直到我添加了流利的验证。 这是(我认为)重要的代码: 每次我在角度侧调用post时,都会在行上抛出System.ArgumentException:“ TEn
1回复

使用Fluent验证配置NancyFx

我是否需要在应用程序Bootstrapper中添加任何配置代码以在Nancy中启用FluentValidation? 按照https://github.com/NancyFx/Nancy/tree/master/src/Nancy.Demo.Validation中的示例,我尝试在模型上使用t
2回复

NuGet无法安装FluentValidation

我正在尝试安装NuGet软件包Nancy.Validation.FluentValidation但由于我认为框架不受支持而导致安装失败? 完整的NuGet错误如下。 我正在使用.NET 4.5。 我看不出为什么会失败? 任何想法出了什么问题? 安装Nancy.Validation.
2回复

FluentValidation自定义消息本地化不适用于When()条件

我正在使用流畅的验证和资源文件本地化一个站点,一切正常,除了当我尝试使用验证"When()"条件设置自定义错误"When()" 。 在以下示例中: 前两个规则(名称和修订版)工作正常,并根据用户选择的任何文化显示英语或西班牙语消息。 但是,带有"when"条件的第三条规则将始终显示英文消息。 我已经
1回复

使用Nancy框架进行本地化

我正在构建一个应用程序,它将使用Nancy作为Razor视图引擎的服务。 该应用程序将必须全球化为多种语言。 我以在Github上找到的演示为起点,该演示是在https://github.com/NancyFx/Nancy/tree/master/src/Nancy.Demo.Razor.
1回复

南希本地化-独立的资源库

我有一个由Nancy托管的网站,我需要Razor网页使用资源字符串,这些资源字符串将在驻留在单独库中的资源文件中实现。 这可能吗? 谢谢
1回复

格里芬本地化和流利验证

我是格里芬本地化的新手,这看起来很酷。 但是,示例仅向我展示了如何转换MVC验证属性。 我正在使用最小的mvc验证属性(如果没有)。 我的想法是(尝试)不要在数据层和UI层两次验证和报告消息。 我使用Fluent Validation在数据层创建验证器。 您能否给我一个快速的指导(
2回复

Nancy的本地化没有剃刀视图

目前我在南希使用剃须刀作为我的视图引擎。 我可以在剃刀中访问我的资源文件: 但我想切换到另一个视图引擎。 是否有其他可用的视图引擎支持TextResource? 本地化如何在超级简单视图引擎中运行? 或者有没有办法使用模型访问资源?