изменить сообщение проверки в аннотации данных

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

 [Required(ErrorMessage = "Введите название")]
    [DisplayName("Название")]
    public int age { get; set; }
7 голосов | спросил kusanagi 13 MarpmSat, 13 Mar 2010 23:37:53 +03002010-03-13T23:37:53+03:0011 2010, 23:37:53

2 ответа


0

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

Другой способ добиться этого - добавить папку 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 это изменится). Если вы хотите полностью контролировать логику проверки, я бы порекомендовал вам использовать библиотеку проверки, такую ​​как Fluent Validation или xVal .

ответил Darin Dimitrov 14 MarpmSun, 14 Mar 2010 12:32:54 +03002010-03-14T12:32:54+03:0012 2010, 12:32:54
0

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

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

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

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

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

ответил Matthijs Wessels 12 +04002011-10-12T16:46:07+04:00312011bEurope/MoscowWed, 12 Oct 2011 16:46:07 +0400 2011, 16:46:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132