Свободная проверка с использованием NotEmpty для целочисленного свойства - PullRequest
4 голосов
/ 02 февраля 2011

У меня есть следующий код:

public class NewsEditViewDataValidator : AbstractValidator<NewsEditViewData>
{
     public NewsEditViewDataValidator()
     {
          // Status unique identifier cannot be empty
          // Status unique identifier must be greater or equal to 1
          RuleFor(x => x.StatusId)
               .NotEmpty()
               .WithMessage("Status is required")
               .GreaterThanOrEqualTo(1)
               .WithMessage("Status unique identifier must be greater or equal to 1");

          // Other rule sets
     }
}

StatusId является целым числом. Как NotEmpty работает в этом случае? Что это подтверждает? Целые числа или строка? Как будет выглядеть модульный тест для этой части, проверяющей, что целое число не пустое?

Это используется для проверки раскрывающегося списка в моем приложении MVC 3. Проверка работает хорошо на представлении. Часть GreaterThanOrEqualTo состоит в том, что уникальный идентификатор статуса никогда не может быть меньше 1. Это я хочу вызвать для проверки моего объекта. Когда это будет так, NotEmpty тоже не сработает? Есть ли предпочтение тому, кто будет уволен первым? Если StatusId равен 0, какой набор правил сработает? Если это -1? Я хотел бы, чтобы NotEmpty работал с представлением и GreaterThanOrEqualTo при проверке идентификатора бизнес-объекта. Есть предложения?

Ответы [ 3 ]

14 голосов
/ 02 февраля 2011

Посмотрите документацию :

NotEmpty Validator

Описание: Гарантирует, что указанное свойство не является нулевым, пустой строкой или пробелом (или значением по умолчанию для типов значений, например 0 для int ).

Так что NotEmpty() позволит избежать только значения по умолчанию (0) для этого свойства.

1 голос
/ 26 апреля 2011

Я бы посоветовал вам скачать исходный код и посмотреть код / ​​тесты, если не уверены.

StatusId - это integer.Как работает NotEmpty в этом случае?Что он проверяет?

Что значение StatusId является значением по умолчанию для его типа.(0)

Целые числа или строка?

Тип для StatusId, int.

Как будет выглядеть модульный тест для этогоЧастично проверить, что integer не пусто?

var validator = new NewsEditViewDataValidator();
validator.ShouldHaveValidationErrorFor(x => x.StatusID, 0);

Это используется для проверки раскрывающегося списка в моем приложении MVC 3.Проверка работает хорошо на представлении.Часть GreaterThanOrEqualTo состоит в том, что уникальный идентификатор статуса никогда не может быть меньше 1.Это я хочу вызвать для проверки моего объекта.Когда это сделать таким образом, NotEmpty также не сработает?

Используйте, когда или если хотите указать, когда правила должны или не должны быть проверены.

Есть липредпочтение в отношении того, какой из них будет запущен первым?

Я полагаю, что это в порядке, в котором вы их указали.

Если StatusId равно 0, какое правилоset будет срабатывать?

В зависимости от того, какую опцию каскада вы установили, проверка завершится неудачно при первой ошибке или проверит другие правила для свойства.

Если это -1?

Второе правило не будет выполнено.

Я бы хотел, чтобы NotEmpty работал с представлением и GreaterThanOrEqualTo при проверке идентификатора бизнес-объекта.Есть предложения?

0 голосов
/ 06 апреля 2015

@ Брендан Фогт
используйте NotNull () вместо NotEmpty ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...