Ninject.Web.Mvc.FluentValidationライブラリでFluentValidationを使用して、すべてのバリデーターを自動的に接続しています(依存性注入を使用してバリデーターを作成しています)。
次のモデルを作成しました。
public class Parent
{
public string Name { get; set; }
public Child Child1 { get; set; }
public Child Child2 { get; set; }
}
public class Child
{
public string ChildProperty { get; set; }
}
次のバリデーターを使用します。
public class ParentValidator : AbstractValidator<Parent>
{
public ParentValidator()
{
RuleFor(model => model.Name).NotEmpty();
RuleFor(model => model.Child1).SetValidator(new ChildValidator());
}
}
public class ChildValidator : AbstractValidator<Child>
{
public ChildValidator()
{
RuleFor(model => model.ChildProperty).NotEmpty();
}
}
私の見解:
@model Parent
@using(Html.BeginForm())
{
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
@Html.EditorFor(model => model.Child1)
@Html.EditorFor(model => model.Child2)
<input type="submit" value="Save" />
}
@model Child
@Html.EditorFor(model => model.ChildProperty)
@Html.EditorFor(model => model.ChildProperty)
私が達成しようとしているのは、2つの子プロパティを持つ親モデルを作成することです。Child1のプロパティは必須ですが、Child2のプロパティはオプションです。これは通常の状況では正常に機能しますが、Ninjectモジュールを使用してバリデーターを自動的に接続すると、Childクラスのバリデータータイプがあることを検出し、ParentのすべてのChildプロパティを接続します。
Ninjectモジュールを削除せずにこれが発生するのを防ぐ方法はありますか?