ASP.NET CoreのビューからAPIコントローラに渡されたモデルを検証するにはどうすればよいですか? FluentValidationのようなツールや、私たちのエラーやメッセージをクライアントアプリケーションに戻すようにカスタマイズできる類似のアプローチはありますか?ASP.NETモデルのビューとFluent Validation
1
A
答えて
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
関連する問題
- 1. Fluent Validation on string
- 2. ServiceStack + Razor + Auth + Fluent Validation
- 3. ASP.NET MVC3 Fluent Validationコンストラクターがリクエストごとに複数回ヒットする
- 4. ServiceStack Fluent Validation - メッセージの問題
- 5. Fluent Validation、Asp.NET Coreのリスト内の各項目のバリデーション
- 6. Fluent ValidationおよびStructuremap AssemblyScannerの実装。 ASP.NET MVC3
- 7. ASP.NET Core 1.1でFluent Validationを使用したカスタムバリデータを使用
- 8. ASP.NET MVC 3ビューとモデル
- 9. Fluent Validation ModelState ["Prop"])の重複エラー
- 10. Fluent Validationを使用したMVC3 ReCaptcha
- 11. Fluent ValidationでNancyFxを設定する
- 12. Fluent NHibernateとASP.NET MVCを使用したDRYモデル
- 13. asp.net mvc DataAnnotation Validation
- 14. ASP.Net TextBox Validation
- 15. asp.net multipline textbox validation
- 16. ASP.NET MVCデータアノテーションValidation ErrorMessageResourceType
- 17. asp.net mvc database interaction validation
- 18. ASP.NET MVC 5モデルのビューの問題
- 19. 複数のモデル単一のビューAsp.net mvc
- 20. ASP.NET MVCつのビューで複数のモデル
- 21. Asp.net mvc4レイアウトでモデルの部分ビュー
- 22. 一般的なASP.NET MVCモデル、コントローラ、ビュー
- 23. ASP.NET MVC - ビューに通知するモデル?
- 24. Fluent ValidationをCustomAsyncからMustAsyncに変更する
- 25. Fluent Validation Listオブジェクトでは機能しません
- 26. モデルとビューのフィルタ
- 27. asp.net response.redirect validationを避ける
- 28. Fluent Validationを使用しているときにNullReferenceExceptionが発生する
- 29. モデルのプロパティをバインドするHtmlHelper。 Fluent Interface
- 30. (Fluent)子モデルを含むモデルでの検証
.NET CoreではFluentValidationが利用できますか?ここには例があります(https://github.com/JeremySkinner/FluentValidation/issues/98#issuecomment-249701088)。 –