我是一名初級程序員,嘗試編寫一小段代碼來測試FluentValidation,但沒有手動調用驗證程序並使用.AddToModelState將結果添加到模型狀態,我無法使ModelState.IsValid識別驗證中存在錯誤。我在某處丟失集成嗎?ModelState.IsValid在使用FluentValidation時總是評估爲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