저는 FluentValidation을 테스트하기 위해 간단한 코드를 작성하려고 노력하는 주니어 프로그래머이지만 수동으로 유효성 검사기를 호출하고 결과를 .AddToModelState, 유효성 검사에 오류가 있음을 인식하도록 ModelState.IsValid를 가져올 수 없습니다. 어딘가에 통합이 누락 되었습니까?FluentValidation으로 작업 할 때 ModelState.IsValid는 항상 true로 평가됩니다.
이것은 내 값 모델이며, 두 개의 사전 설정 값이있는 문자열 배열입니다.
using FluentValidation.Attributes;
using Playground2.Validators;
namespace Playground2.Models
{
[Validator(typeof(ValueValidator))]
public class Value
{
public string[] values = { "value1", "" };
}
}
이것은 5 자에서 10 자 사이의 두 값을 찾고있는 유효성 검사기입니다.
using FluentValidation;
using Playground2.Models;
namespace Playground2.Validators
{
public class ValueValidator : AbstractValidator<Value>
{
public ValueValidator()
{
RuleFor(x => x.values[0]).Length(5, 10);
RuleFor(x => x.values[1]).Length(5, 10);
}
}
}
ValuesController에서 값 개체를 만들고 출력 전에 유효성 검사를 통과하는지 확인하기 만하면됩니다.
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc;
using Playground2.Models;
using System.Collections.Generic;
namespace Playground2.Controllers
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
var value = new Value();
if (!ModelState.IsValid)
{
return new string[] { "Not valid" };
}
else
{
return value.values;
}
}
그러나 실행할 때 값으로 공급되는 정보가 잘못 기본입니다 불구하고, ModelState.IsValid는 항상 참으로 평가하고있다.
필자는 모델 바인딩을 통해 (요청) 매개 변수만을 살펴볼 것이라고 생각합니다. 아무 것도 없으므로 ('Get()') 요청은 유효합니다. – Caramiriel