В моей модели у меня есть особое поле, которое аннотированный следующим образом:Почему MVC 3 Validation перезаписывает мой?
[DataType(System.ComponentModel.DataAnnotations.DataType.Text)]
[RegularExpression("[0-9]{1,10}", ErrorMessage = "The stated Attempt Id is invalid!")]
public long? AttemptId { get; set; }
Когда я вхожу неверные данные в попытке ID это дает мне следующее сообщение об ошибке в государстве Модель:
The value 'cbcbxcb' is not valid for AttemptId.
У меня есть другое поле с похожими сообщениями об ошибке, но они имеют тип string вместо long? и правильное сообщение об ошибке отображается в тех случаях, когда задано недопустимое значение. Почему не сообщение для «длинного»? быть использованным? Я показываю свои ошибки, используя следующий литеральный тег на странице.
<%: Html.TValidationSummary() %>
EDIT: Я попытался изменить проверки в модели следующее:
[Required(ErrorMessage="The stated Attempt Id is invalid!", AllowEmptyStrings=true)]
Это, однако, по-прежнему неправильно. Во-первых, мне нужно разрешить пустое поле, и когда я это делаю, он дает мне «Заявленный идентификатор попытки недействителен!» сообщение об ошибке. Во-вторых, когда я ввожу неверные данные в поле, он возвращается к своему старому сообщению о плохих ошибках.
Спасибо за ответ. теперь трюк заключается в том, что это конкретное поле не является действительно обязательным полем, поэтому пользователю следует разрешить пустую точку. Есть ли способ сделать то, что вы предлагаете, не привязывая его как «обязательное»? –
Я изменил валидацию на «[Обязательно (ErrorMessage =« Заявленный идентификатор попытки недействителен! », AllowEmptyStrings = true)] ', и теперь он отображает сообщение об ошибке, если он оставлен пустым (что ему не нужно), и все еще показывает его неправильное error messag eif недействителен. –
Редактировали, чтобы предоставить альтернативное решение, если ваш параметр необязателен – DaveRead