10

ASP.NET MVC4 アプリケーションでは、モデルの検証に FluentValidation を使用しています。特定のケースでは、別のプロパティに値がある場合にのみプロパティを検証したいことがあります。これを実現するには、When キーワードを使用します。単純な検証クラスは次のようになります。

public class PersonValidator : AbstractValidator<Person>
{
    public PersonValidator()
    {
        RuleFor(item => item.FirstName).NotEmpty();
        RuleFor(item => item.LastName).NotEmpty().When(item => !string.IsNullOrEmpty(item.FirstName))
    }
}

これについては、クライアント側の検証が必要です。カスタム FluentValidationPropertyValidator を作成しようとしました。しかし、検証ルールの When 部分を取得する方法が見つかりません。誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

0

Fluent Validation は、サーバー側の検証ライブラリです。ただし、required、maxlength などのいくつかの基本的なクライアント検証をサポートしています。

クライアント側の完全なサポートを Fluent Validation に追加する場合は、 Form Helperを使用できます。

次のようなフォームを作成する必要があります。

var formConfig = new FormConfig(ViewContext)
{
    FormId = "ProductForm",
    FormTitle = "New Product",
    BeforeSubmit = "ProductFormBeforeSubmit", // optional
    Callback = "ProductFormCallback" // optional,
};

// <form id="@formConfig.FormId" asp-controller="Home" asp-action="Save"
// ...

@await Html.RenderFormScript(formConfig)

その後、アクションに[FormValidator]属性を追加する必要があります。

于 2019-06-15T02:02:53.027 に答える