我正在使用FluentValidation来验证MVC表单上的输入. 我有一个复选框. 无论我将验证规则设置为什么,它都不会验证复选框. 我知道验证工作正常,因为我有一个在同一页面上验证正常的下拉列
我有一个复选框.
无论我将验证规则设置为什么,它都不会验证复选框.
我知道验证工作正常,因为我有一个在同一页面上验证正常的下拉列表.
视图
<%: Html.CheckBoxFor(m => m.fullname_required) %>
模型
[Validator(typeof(CreateFormModelValidator))] public class CreateFormModel { public int? group_id { get; set; } public IEnumerable<SelectListItem> Groups { get; set; } [DisplayName("Fullname is required")] public bool fullname_required { get; set; } } public class CreateFormModelValidator : AbstractValidator<CreateFormModel> { public CreateFormModelValidator() { RuleFor(x => x.group_id).NotEmpty().NotNull().WithMessage("Please select a group!"); RuleFor(x => x.fullname_required).NotNull(); } }
我试过了
RuleFor(x => x.fullname_required).NotEmpty(); RuleFor(x => x.fullname_required).NotNull(); RuleFor(x => x.fullname_required).NotEqual(false);
这些都不起作用.我要去尝试做这项工作的香蕉.这是一个F *** ing复选框
PS:我发现线程正在谈论使用jQuery,但这是使用服务器端验证,而不是客户端.
我从未在页面上放置ValidationMessageFor属性作为复选框.它验证很好,但我看不到它.更新:
最终的目标是有一个复选框,只有在选中第二个复选框时才会对其进行验证.即
RuleFor(x => x.fullname_show).NotEmpty().When(x => x.fullname_required == true);
但是,在上面的facepalm之后,这仍然不起作用,但是由于lomaxx,我能够通过将fullname_required转换为bool来实现它吗?
RuleFor(x => x.fullname_show).NotEmpty().When(x => ((bool?)x.fullname_required) != false);
如果有人试图在MVC中使用FluentValidation有条件地验证复选框,那就是你如何做到的!