首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用FluentValidation.AspNetCore和FluentValidation.MVC6?

如何使用FluentValidation.AspNetCore和FluentValidation.MVC6?
EN

Stack Overflow用户
提问于 2016-10-17 18:23:45
回答 2查看 9.1K关注 0票数 6

如何使用FluentValidation.AspNetCore和FluentValidation.MVC6来验证AspNetCore中的实体,有人能给我举个例子吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-19 10:04:23

这是为我工作的:

project.json添加:

代码语言:javascript
运行
复制
"FluentValidation.AspNetCore": "6.4.0-beta3"

startup.cs

代码语言:javascript
运行
复制
services
.AddMvc()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());

审定:

代码语言:javascript
运行
复制
public class Foo
{
     public string Bar {get; set;}
}

public class FooValidator : AbstractValidator<Foo> 
{
    public FooValidator()
    { 
        RuleFor(x => x.Bar).NotEmpty().WithMessage("Error Message");
    }
}
票数 11
EN

Stack Overflow用户

发布于 2019-10-15 07:41:52

首先,您需要添加nuget 安装包FluentValidation.AspNetCore

您可以使用一个操作筛选器来处理验证:

代码语言:javascript
运行
复制
public class ValidatorActionFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!filterContext.ModelState.IsValid)
        {
            filterContext.Result = new BadRequestObjectResult(filterContext.ModelState);
        }
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {

    }
}

Startup.ConfigureServices看起来如下所示,用于添加自动验证和添加FluentValidation:

代码语言:javascript
运行
复制
services.AddMvc(opt =>
        {
            opt.Filters.Add(typeof(ValidatorActionFilter));
        }).AddFluentValidation(fvc => 
   fvc.RegisterValidatorsFromAssemblyContaining<Startup>())

如果需要读取另一个程序集,请将其类命名为,而不是startUp

现在您可以添加一个验证,以确保:

代码语言:javascript
运行
复制
public class CreateCustomer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

public class CreateCustomerValidator : AbstractValidator<CreateCustomer>
{
    public CreateCustomerValidator()
    {
        RuleFor(x => x.FirstName).NotNull().WithMessage(Resource.Validaton.FirstNameRequired);
        RuleFor(x => x.LastName).NotNull().WithMessage(Resource.Validaton.LastNameRequired);
        RuleFor(x => x.Email).Matches(@"\A(?:[a-z0-9!#$%&'*=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z").WithMessage(Resource.Validaton.EmailFormat);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40093172

复制
相关文章

相似问题

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