我正在使用 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 类有一个验证器类型,并连接 Parent 上的所有 Child 属性。
有什么办法可以在不摆脱 Ninject 模块的情况下防止这种情况发生?