当我将int设置为空字符串时,FluentValidation传递一个带有NotEmpty()的空字符串

时间:2014-11-28 03:47:01

标签: asp.net-mvc asp.net-mvc-5 fluentvalidation

我有这个验证码

        RuleFor(x => x.Name).NotEmpty().WithMessage("[[[Name is required.]]]");
        const string sortWeightError = "[[[Sort weight must be a value between 1 and 10000.]]]";
        RuleFor(x => x.SortWeight).NotEmpty().WithMessage(sortWeightError);

其中,Name是string,SortWeight是int。 当我验证SortWeight设置为0并且名称为空字符串时,两者都会失败。

但是一旦我也将SortWeight清除为一个空字符串(之前为0),那么Name(是名字,而不是SortWeight)即使它仍然是一个空字符串也会通过验证。

如果我将SortWeight设置为int?而不是int它全部按预期工作,除了它然后允许0我用GreaterThan修复。

但是,非常奇怪的行为,文档说它应该确保它不是null或空/空格字符串无论哪种类型。最奇怪的是,当我传入一个空字符串时,它仍然没有使SortWeight字段失败,但它传递了另一个应该总是失败的字段(Name),因为它总是有一个空字符串。

0 个答案:

没有答案