Mam następujący kod działaMVC 4 - DataAnnotations - Validation dla typu
[Required(ErrorMessage = "Price is required.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price xx.xx")]
public decimal? productPrice { get; set; }
Gdy strona jest złożony z Cena = komunikat o błędzie jest puste pole „Cena jest wymagane.”. Cena = ponad 9999 komunikat o błędzie to "Cena xx.xx".
Jednak po wpisaniu "aaaa" komunikat o błędzie to "Produkt polaCena musi być liczbą."
Jak mogę zmienić komunikat, jeśli wpisz niepoprawny? odczuwalna:. „Cena musi być dziesiętną/liczba pomiędzy 1-9999
---- UPDATE: ---- Poniższy kod pracował z
NULL, a nie po przecinku, Między Range, , ale nie działa z”.1"
[Required(ErrorMessage = "Price is required.")]
[RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "Price must be a Numbers only.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price must be a decimal/number between {1} and {2}.")]
public decimal? productPrice { get; set; }
To wyrażenie regularne nie powiedzie się w różnych przypadkach takich ".1" Nie polecam używania wyrażeń regularnych do pomijania liczb. wyrażenia regularne służą do dopasowywania ciągów znaków (tekstu). RangeAttribute jest najbardziej odpowiednim sposobem rozwiązania tego problemu. –
@JOBG, jak powiedział Martin, ".1" NIE jest przechwycony przez jedną z (3) DataAnnotations. jakieś pomysły? –
Po prostu zmień metodę @MartinDevillers Range z zakresu od 1-999 do 0-999 i powinieneś podać ".1", ponieważ powiedziałem, że Range jest lepszym rozwiązaniem. Dodałem również wyrażenie regularne na wypadek, gdybyś chciał to sprawdzić. – JOBG