2010-03-13 27 views
7

mój obiekt ma pole z typem danych int. kiedy umieszczam w formularzu HTML w tym polu tekstowym, nie numer walidatora powiedz - pole musi być liczbą. jak mogę to zmienić wiadomości jak tazmiana komunikatu sprawdzania poprawności w adnotacji danych

[Required(ErrorMessage = "Введите название")] 
    [DisplayName("Название")] 
    public int age { get; set; } 
+0

Czy są jakieś powody, dla których to pytanie zostało odrzucone? Proszę zostawić komentarz podczas rezygnacji z pytania. IMHO to dobre pytanie. –

+0

Nie wszyscy rozumieją rosyjski. tekst atrybutu powinien być w języku angielskim. –

Odpowiedz

4

ja nie znalazłem czyste sposobem osiągnięcia tego celu przy użyciu danych adnotacje. Jednym ze sposobów byłoby napisanie niestandardowego spoiwa modelu, ale wydaje się, że jest to dużo pracy do wykonania tak prostego zadania.

Innym sposobem na to jest dodanie folderu App_GlobalResources do aplikacji ASP.NET. Dodaj plik zasobów o nazwie Messages.resx zawierający zasób ciągów .

PropertyValueRequired = "Some custom error message" 

W swojej Application_Start zarejestrować klucz klasy zasobów:

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    DefaultModelBinder.ResourceClassKey = "Messages"; 
} 

Zauważ, że ASP.NET MVC 2 wykorzystuje klucz Resource PropertyValueInvalid zamiast PropertyValueRequired.

IMO przy użyciu Adnotacji danych do wykonywania logiki sprawdzania poprawności jest ograniczone (może w .NET 4 to się zmieni). Jeśli chcesz mieć pełną kontrolę nad logiką walidacji, zaleciłbym korzystanie z biblioteki sprawdzania poprawności, takiej jak Fluent Validation lub xVal.

+0

Mam dokładnie ten sam problem. Przejrzałem także adnotacje danych do Fluent Validation. Uważam, że płynna walidacja jest naprawdę przydatna i łatwa do dostosowania. –

+0

Jakieś powody, dla których polecasz Fluencewalność? Czy jest lepszy niż blok aplikacji Enterprise Library Validation? BTW, xVal jest obecnie przestarzałe. –

+0

Polecam FV, ponieważ jest lekki, pozwala na eleganckie wyrażanie złożonych reguł sprawdzania poprawności, dostarcza API do łatwego testowania tych reguł walidacji i ma doskonałą integrację z ASP.NET MVC. –

2

Wpadłem na ten sam problem i obejrzałem go, określając funkcję RegularExpression, która zezwala tylko na pozytywne liczby naturalne.

[Required(ErrorMessage = "Введите название")] 
[DisplayName("Название")] 
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")] 
public int age { get; set; } 

Nie jestem pewien, czy są jakieś awarie tego rozwiązania. Wygląda na to, że działa dobrze dla mnie.

PS: Jeśli nie chcesz, aby wiodące zera używały "^[1-9]+[0-9]*$".

Z perspektywy czasu: muszę przyznać, że dodanie do wyrażenia regularnego liczby całkowitej jest nieco dziwne.

Powiązane problemy