изменить сообщение проверки в аннотации данных - PullRequest
7 голосов
/ 13 марта 2010

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

 [Required(ErrorMessage = "Введите название")]
    [DisplayName("Название")]
    public int age { get; set; }

Ответы [ 2 ]

4 голосов
/ 14 марта 2010

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

Еще один способ добиться этого - добавить папку App_GlobalResources в приложение ASP.NET. Добавьте файл ресурсов с именем Messages.resx, содержащий строковый ресурс PropertyValueRequired.

PropertyValueRequired = "Some custom error message"

В вашем Application_Start зарегистрируйте ключ класса ресурса:

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    DefaultModelBinder.ResourceClassKey = "Messages";
}

Обратите внимание, что ASP.NET MVC 2 использует ключ ресурса PropertyValueInvalid вместо PropertyValueRequired.

IMO, использующий аннотации данных для выполнения логики проверки, ограничен (возможно, в .NET 4 это изменится). Если вы хотите иметь полный контроль над логикой проверки, я бы порекомендовал вам использовать библиотеку проверки, такую ​​как Свободная проверка или xVal .

2 голосов
/ 12 октября 2011

Я столкнулся с той же проблемой и обошел ее, указав выражение RegularExpression, которое допускает только положительные натуральные числа.

[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")]
public int age { get; set; }

Не уверен, есть ли какие-либо недостатки этого решения. Кажется, у меня нормально работает.

PS: Если вы не хотите разрешать начальные нули, используйте "^[1-9]+[0-9]*$".

Оглядываясь назад: я должен признать, что немного странно добавлять регулярное выражение к целому числу.

...