Я использую Fluent Validation с библиотекой Ninject.Web.Mvc.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)
Я пытаюсь создать родительскую модель с двумядочерние свойства.Свойство Child1 обязательно, но свойство Child2 необязательно.Это нормально работает при нормальных обстоятельствах, но когда я использую модуль Ninject для автоматического подключения валидаторов, то он обнаруживает, что существует класс валидатора для класса Child, и связывает все свойства Child в Parent.
Можно ли как-то предотвратить это, не избавившись от модуля Ninject?