web 2.0

Как удалить сообщение валидации "The field must be a number"

 

При использовании валидации полей на стороне клиента, появляются некоторые сообщения на английском языке. Например:

The field must be a number

Это сообщение не так просто удаляется. Поскольку разработчики майкрософта включили это в MVC в самый последний момент, они уже не позаботились о жителях других странах и национальностях, чтобы им было удобно читать подобное сообщение на своём языке.

В результате эксперты предлагают разные решения:

  • Не использовать валидацию на стороне клиента
  • Не использовать ClientDataTypeModelValidatorProvider
  • Заменить ClientDataTypeModelValidatorProvider на свой провайдер

 

В поисках самого решения, я нашёл самый оптимальный выход, который подходит моим требованиям. В этом решении используется валидация javascript на стороне клиента, и не отображается несчастное сообщение на английском языке “The field must be a number”.

Итак делаем следующее:

В моделе пишем настройки валидации:

public class Product
{
[Range(100, 1000)]
public int QuantityInStock { get; set; }
  public decimal Cost { get; set; }
}

На стороне контроллера, добавляем следующий код, удаляющий валидацию типов на стороне клиента:

 

// Удаляем Провайдр валидации типов со стороны клиента, чтобы не появлялось сообщение на англ.
// The field xxxx must be a number
foreach (ModelValidatorProvider prov in ModelValidatorProviders.Providers)
{
	if (prov.GetType().Equals(typeof(ClientDataTypeModelValidatorProvider)))
	{
		ModelValidatorProviders.Providers.Remove(prov);
		break;
	}
}

 

Другой простой способ, который может помочь - это RegularExpression, например:

RegularExpression("\\d{12}", ErrorMessage = "Пожалуйста вводите не более 12 цифр в поле телефона")]

Можно также и добавить собственный провайдер для валидации типов данных на стороне клиента. Подробнее об этом на английском языке можно найти информацию здесь:

http://jwwishart.wordpress.com/2010/03/22/custom-server-and-client-side-required-validator-in-mvc-2-using-jquery-validate/

 

Tags: , ,

Blog

Comments (1) -

Вася Russia, on 10/30/2010 7:02:01 PM Said:

Вася

Спасибо за информацию

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading