0

Я разрабатываю приложение ASP.NET MVC3.Пользовательский ErrorMessage для свойства модели не отображается только в рабочей среде

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

Вот пример:

[Required] 
[Range(1d, 1000d, ErrorMessage = "My custom error message in French")] 
public decimal Surface { get; set; } 

Когда тип пользователя "ABCDE" в Surface поле, у меня есть следующее сообщение об ошибке:

Поле Поверхность должна быть числом.

Однако он должен отображать указанный ErrorMessage. Это работает в localhost, но не на моем веб-сервере.

Я пытался заставить культуру web.config следующим образом:

<globalization culture="fr-FR" uiCulture="fr-FR"/> 

Но это не работает.

Как заставить приложение отображать ErrorMessage?
Я ничего не могу изменить на веб-сервере, на котором размещается мое приложение, это персональный проект, размещенный на локальном хостинге веб-сайта.

Спасибо за вашу помощь

+1

_abcde_ не может быть проанализирован десятичной точкой, поэтому отображается эта ошибка. Если вы должны были ввести '0' или' 1001', вы должны получить ошибку, связанную с атрибутом диапазона. –

+0

Наверное, но я хотел бы, чтобы пользовательское сообщение об ошибке отображалось каждый раз, когда установлен входной сигнал insect, «abcde», 1500, -400 или что-либо, что не является заданным диапазоном. Как я мог это достичь? – user2687153

+0

Посмотрите мой ответ ниже, чтобы достичь этого – Mansoor

ответ

1

Как Стивен Муеке написал «ABCDE» не может быть разобрано в десятичной, так он показывает общую ошибку, что «Поле Поверхность должна быть числом».

Чтобы сделать сообщение об ошибке как настраиваемое сообщение, вам нужно проверить, является ли ввод числом/десятичным, и вы можете сделать это с помощью регулярного выражения. Измените код следующим образом

[Required] 
[RegularExpression(@"^\d+.\d{0,2}$",ErrorMessage = "custom error in your language")]// add this extra line 
[Range(1d, 1000d, ErrorMessage = "My custom error message in French")] 
public decimal Surface { get; set; } 

Вам нужно добавить следующую строку

[RegularExpression(@"^\d+.\d{0,2}$",ErrorMessage = "custom error in your language")] 

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

+0

Это похоже на работу, большое спасибо ! Я немного разочарован, я должен добавить тег RegularExpression, я надеялся, что '' Range' мог бы сделать трюк сам. Но я понимаю объяснение, так, хорошо ... Большое спасибо :-) – user2687153