#asp.net-mvc-3
#asp.net-mvc-3
Вопрос:
Как я могу отключить встроенную проверку для свойства типа float?
У нас есть собственные пользовательские атрибуты проверки, которые работают нормально. Но у нас есть сценарий, в котором мы хотим, чтобы свойство с плавающей запятой принимало ( .1 ) в качестве допустимого числа с плавающей запятой. Что, очевидно, означает (0.1), но это число не принимается встроенной проверкой.
По сути, я хочу отключить проверку на основе свойств по свойствам и по-прежнему применять свои собственные пользовательские проверки.
Ответ №1:
Используйте нулевой тип в вашем свойстве viewmodel, например:
float? MyProp {get; set;}
Это останавливает выполнение встроенной проверки, но все равно будет использовать вашу пользовательскую проверку. Очевидно, что, поскольку вы теперь сделали свойство обнуляемым, вы можете захотеть добавить обязательный атрибут проверки к свойству, чтобы убедиться, что вы получаете значение.
Комментарии:
1. Да, это касается проверки требуемого поля, а не проверки числового поля.
Ответ №2:
Оказывается, .3
это фактически принимается связующим элементом модели по умолчанию. Проблема на самом деле связана с реализацией проверки клиента. Если проверка клиента для вас не важна, вы можете решить эту проблему, открыв web.config и перейдя ClientValidationEnabled
в false
within AppSettings
.
Комментарии:
1. На самом деле проверка клиента важна для меня.
2. Я попытался отключить проверку клиента в этом конкретном поле, и угадайте, что? Я получил проверку на стороне сервера этого нелокализованного сообщения о проверке. НЕТ ли способа отключить проверки на основе метаданных для примитивных типов? Должен быть способ…
3. «Я получил проверку на стороне сервера этого нелокализованного сообщения о проверке». Итак, если проверка клиента отключена,
.3
у вас это все еще не работает?