2013-02-09 13 views
10

Czy ktoś mógłby podzielić się swoją implementacją oddzielnych komunikatów o błędach dla minimalnej i maksymalnej długości ciągu za pomocą adnotacji danych w MVC?Oddzielny komunikat o błędzie dla minimalnej i maksymalnej długości ciągu znaków - MVC4 Adnotacja danych

Wydaje StringLength pozwala tylko jeden komunikat o błędzie MinLength/MaxLength nie generują dyskretne znaczników poprawności, ponieważ nie są IClientValidatable

Choć wydaje się to bardzo często wymogiem nie mogę znaleźć implementację w sieci.

+1

[Wyrażenia regularne?] (Http://stackoverflow.com/a/8184202/609176) –

+0

Czy wygenerują one niepozorne atrybuty sprawdzania poprawności? – parliament

+1

Yup, javascript wykona stronę klienta wyrażeń regularnych –

Odpowiedz

21

Możesz użyć adnotacji danych RegularExpression dla kontroli minimalnej i użyć atrybutu StringLength dla kontroli maksymalnej. JavaScript wykona stronę klienta z wyrażeń regularnych, dzięki czemu są ładne i dyskretne! Możesz użyć tylko jednego atrybutu RegularExpression dla każdej właściwości, w przeciwnym razie możesz zrobić zarówno maksymalną, jak i minimalną wartość za pomocą wyrażenia regularnego.

Minimum 5 znaków

[RegularExpression(@"^.{5,}$", ErrorMessage = "Minimum 5 characters required")] 

Maksymalnie 50 znaków

[StringLength(50, ErrorMessage = "Maximum {2} characters exceeded")] 
+0

Hej Właśnie próbowałem tego i nie mogę użyć 2, mówi duplikat atrybut! lol Nadal potrzebuję rozwiązania :( – parliament

+1

Ah. Wiedziałem, że działały dyskretnie ... A co z użyciem jednego z nich dla minimum i '[StringLength (50, ErrorMessage =" Maksymalna {2} znaków przekroczona ")] dla max? –

+0

Dobry pomysł :) Użyłem StringLength (int.MaxValue, ErrorMessage = "Minimum") dla min i regex dla max. Jeszcze raz dziękuję – parliament

14

Chociaż nie jest to oddzielne wiadomości, to co zrobiłem:

[StringLength(30, ErrorMessage = "Must be between {2} and {1} characters long.", MinimumLength = 6)] 
+0

Ten jest krótszy i działa. –

+0

Jeśli nie użyjesz opcji [Wymagane], a ciąg znaków będzie pusty, wartość MinimumLength zostanie zignorowana. – CooncilWorker

1
[StringLength(800, ErrorMessage = "<img src='/images/icon-info.png' /><p>The {0} must be between {2} and {1} characters long.</p>", MinimumLength = 6)] 

ten wyświetli obraz, a także min i maks. długość.

Powiązane problemy