1

ASP.NET CoreのビューからAPIコントローラに渡されたモデルを検証するにはどうすればよいですか? FluentValidationのようなツールや、私たちのエラーやメッセージをクライアントアプリケーションに戻すようにカスタマイズできる類似のアプローチはありますか?ASP.NETモデルのビューとFluent Validation

+2

.NET CoreではFluentValidationが利用できますか?ここには例があります(https://github.com/JeremySkinner/FluentValidation/issues/98#issuecomment-249701088)。 –

答えて

2

IValidatableObjectインターフェイスを使用します。その後、抽象基本クラスを作成し、クラスに継承させます。 System.ComponentModel.DataAnnotationsへの参照を追加する必要があります。ヘルパーメソッドを基本クラスに追加することもできます。上記

public class InsertCompanies : ValidatingBase 
{ 
    public string CompanyName { get; set; } 

    #region ValidatingCommandBase 

     public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
     { 
      if (this.IsNullOrEmpty(this.Name)) 
      { 
       yield return new ValidationResult($"{nameof(this.Name)} field can't be null or empty.", new[] { nameof(this.Name) }); 
      } 

      if (this.Name?.Length > 100) 
      { 
       yield return new ValidationResult($"{nameof(this.Name)} field can't be greater than 100 characters.", new[] { nameof(this.Name) }); 
      } 
     } 

     #endregion ValidatingCommandBase 
} 

から継承

その後
public abstract class ValidatingBase : IValidatableObject 
{ 
     public bool IsNullOrEmpty(string property) 
     { 
      return string.IsNullOrEmpty(property); 
     } 

      #region IValidatableObject 

     public abstract IEnumerable<ValidationResult> Validate(ValidationContext validationContext); 

     public IEnumerable<ValidationResult> Validate() 
     { 
      var validationErrors = new List<ValidationResult>(); 
      var ctx = new ValidationContext(this, null, null); 
      Validator.TryValidateObject(this, ctx, validationErrors, true); 
      return validationErrors; 
     } 

     #endregion IValidatableObject 
} 

あなたのクラスは、上記の実装で何ができるかのように多くの制限がありません。おそらくそれはあなたにとって実行可能な選択肢ですか?

Asp.Net Coreがお手伝いします。詳細については、下のリンクをご覧ください。 https://docs.asp.net/en/latest/mvc/models/validation.html

1
[HttpPost] 

    public ActionResult Register(RegisterViewModel model) 
    { 
    // if the validation doesn't match then load same view again with errors 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 



    } 
+0

Nasimに感謝、私はすでにこれについて知っています。私は、これを行うためのナゲットライブラリまたはより良い方法を使用して、よりダイナミックでカスタマイズされたアプローチを探しています。 – Coding

関連する問題