Проверьте DateTimeOffset и TimeSpan, используя валидаторы атрибутов в ASP.NET MVC - PullRequest
1 голос
/ 27 ноября 2010

Итак, у меня есть сущности, настроенные с помощью Entity Framework, которые имеют некоторые свойства типов String, DateTimeOffset и TimeSpan. Для проверки правильности строк я использовал довольно простые атрибуты, такие как «[Required]» или «[StringLength]», а в качестве элемента управления используется текстовое поле.

Моя проблема теперь связана с DateTimeOffset и TimeSpan, я не уверен, какой элемент управления использовать, но еще более не уверен, какие атрибуты использовать для проверки ввода.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 23 января 2011

Я не верю, что есть способ вывести тип данных из ввода.Кажется, единственный подход - это обращаться с ней, как нужно бизнес-логике.

0 голосов
/ 28 ноября 2010

Поскольку это временной интервал, вы можете получить эквивалент в минутах и ​​выполнить вызов IsNumeric для этого - это простая пользовательская функция проверки.

Если вы рассчитываете разницу во времени с использованием двух дат, вы можете использовать функцию DateDiff для вычисления разницы и получения временного интервала - но если у вас уже есть это, помните, что временной интервал может быть представлен в виде количества единиц времени, поэтому используйте IsNumeric, используя пользовательскую функцию.

В противном случае, если вы не хотите писать пользовательскую проверку, то. Самый простой способ сделать это - использовать атрибут RangeValidator. Поместите в минимальные и максимальные возможные числа, чтобы быть в безопасности, и когда проверка выполняется с использованием этого атрибута, он вернет False, если это не числовое число в любом случае, так что вы получаете плохую проверку строки из этого одного, и вы также можете проверьте диапазон возможных значений временного интервала - если диапазон не важен, просто установите верхний предел на безопасное значение, например, несколько миллионов минут или что-то подобное (например: Long.MaxValue или Integer.MaxValue).

Вы также можете передать Ticks в качестве значения временного интервала для сравнения с диапазоном, поэтому я считаю, что TimeSpan.Ticks (), но достаточно просто отправить текстовое поле в RangeValidator, оно проверит, что это не текстовые символы и проверьте диапазон и вуаля, проведена проверка и нет необходимости в пользовательской проверке.

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

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