当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc – FluentValidation可以做复选框吗?

来源:互联网 收集:自由互联 发布时间:2021-06-24
我正在使用FluentValidation来验证MVC表单上的输入. 我有一个复选框. 无论我将验证规则设置为什么,它都不会验证复选框. 我知道验证工作正常,因为我有一个在同一页面上验证正常的下拉列
我正在使用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有条件地验证复选框,那就是你如何做到的!

网友评论