2017-02-03 1 views
1

プロジェクトでにライブラリ"FluentValidation.AspNetCore": "6.4.0-beta3"を使用しています。以下のプロジェクト構造を見ることができます。ライブラリは、セクション2(プロジェクトFH.WebAPI)にCurrencyDTO.csコードを配置し、セクション1(クラスライブラリDTO)に配置された同じコードが機能していない場合、正常に動作しています。そして、私はクラスライブラリFH.Commonにコードを置く必要があります。 around.Iが持っているすべての作業は、検索がされているが、任意のものFluentValidation.AspNetCoreがクラスライブラリで動作していません

プロジェクト構造

Project Structure

CurrencyDTO.cs

[Validator(typeof(CurrencyDTOValidator))] 
    public class CurrencyDTO 
    { 
     public int Id { get { return CurrencyId; } } 
     public int CurrencyId { get; set; } 
     public string Name { get; set; } 
     public string Symbol { get; set; } 

    } 

    public class CurrencyDTOValidator : AbstractValidator<CurrencyDTO> 
    { 
     public CurrencyDTOValidator() 
     { 
      RuleFor(x => x.Name).NotEmpty().NotNull().WithMessage("The currency 'Name' is required.") 
             .Length(0, 250).WithMessage("The currency 'Name' cannot be more than 250 characters."); 

      RuleFor(x => x.Symbol).NotEmpty().WithMessage("The currency Symbol is required."); 


     } 
    } 

ライブラリ設定

0を見つけることができませんでした

ステップ1)。で追加する。project.json

{ 
    "dependencies": { 
    "Autofac": "4.3.0", 
    "Autofac.Extensions.DependencyInjection": "4.0.0", 
    "AutoMapper": "5.2.0", 
    "EntityFramework": "6.1.3", 
    "FH.Business": "1.0.0-*", 
    "FH.Common": "1.0.0-*", 
    "JWT": "1.4.1-beta", 
    "Microsoft.AspNet.Http.Extensions": "1.0.0-rc1-final", 
    "Microsoft.AspNet.WebApi.Client": "5.2.3", 
    "Microsoft.AspNet.WebApi.Core": "5.2.3", 
    "Microsoft.AspNetCore.Authentication.JwtBearer": "1.1.0", 
    "Microsoft.AspNetCore.Diagnostics": "1.1.0", 
    "Microsoft.AspNetCore.Mvc": "1.1.1", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    //other libraries.. 
    "FluentValidation.AspNetCore": "6.4.0-beta3" //<------Here 
    }, 

    "tools": { 
    "BundlerMinifier.Core": "2.0.238", 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    }, 

    "frameworks": { 
    "net461": { 
     "frameworkAssemblies": { 
     "System.Drawing": "4.0.0.0" 
     } 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "Areas/**/*.cshtml", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "bower install", "dotnet bundle" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 

ステップ2)。 Startup.cs

public void ConfigureServices(IServiceCollection services) 
      { 
       // Add framework services. 
       services.AddMvc(options => { }).AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>()); 
// Other code.. 
      } 

で問題がstartup.csの登録行にあったコントローラ

[HttpPost] 
     [Route("CreateCurrency")] 
     public IActionResult CreateCurrency([FromBody] CurrencyDTO model) 
     { 
      if (!ModelState.IsValid) //<----Validate here 
      { 
       return new BadRequestObjectResult(ModelState); 
      } 
     //Other Code.. 
     } 

答えて

3

で使用され、私の右の道を示唆していると私はここで彼の答えを引用しています@JeremySkinnerに感謝。

私のミス

services.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>()); 

RegisterValidatorsFromAssemblyContaining<Startup>() to RegisterValidatorsFromAssemblyContaining<CurrencyDTOValidator>() 

Actual link to the Issue

リンク説明

と交換

上記のリンクは@JeremySkinnerの投稿です。

関連する問題