MVC 3 Как отключить проверку свойств модели для типа с плавающей точкой?

#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 у вас это все еще не работает?