2012-04-30 2 views
1

Я следующий вид модели поля:MVC DataAnnotations удалить сообщение об ошибке

[Required] 
[StringLength(9)] 
[RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))] 
public string Number{ get; set; } 

Выражения фильтра Regular будет заботиться о входе больше, чем 9 символов и правильный формат и отобразить его сообщение проверки, но StringLength будет отображаться его собственное сообщение об ошибке по умолчанию. Удаление [StringLength(9)] решит проблему двух разных сообщений, но я предполагаю, что этот фильтр предоставляет ценную информацию SQL о максимальном размере типа данных. Есть ли другой путь ? Спасибо,

ответ

1

Изменение StringLength атрибута включает сообщение об ошибке пустой, например, так:

[StringLength(9, ErrorMessage = "")] 
2

Если удалить StringLength и только:

[Required] 
[RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))] 
public string Number{ get; set; } 

Вы должны быть хорошими. RequiredAttribute будет проверять свойство, и RegularExpressionAttribute будет проверять, что это строка из 9 символов, которые являются всеми цифрами.

редактировать:

Что касается комментария о предположении фильтра дает ценную информацию для SQL ... Нет, это не означало, чтобы сделать это. DataAnnotations предназначены для преодоления разрыва между проверкой уровня клиента и уровня представления. MVC использует внутренние данные DataAnnotations для проверки ViewModel, но ViewModel необязательно (считайте: не должен) считаться моделью домена. ViewModel - это модель того, что вы хотите отобразить для пользователя, в то время как модель домена обычно представляет данные.

Я написал блог некоторое время назад, в котором вы просматриваете DataAnnotations в MVC 3 и как структура превращает их в ненавязчивые проверки JavaScript на стороне клиента. Это определенно стоит проверить.

Code is here и blog is here.

Смежные вопросы