2011-08-20 15 views
6

Mam problem z błędem sprawdzania poprawności, który pojawia się tylko w systemie Windows Azure, ale nie w lokalnym emulatorze platformy Azure.Problem sprawdzania poprawności w systemach Windows Azure, EF i MVC3

W moim modelu mam klasy z atrybutem „Start” i DisplayFormat na dzień niemieckim formacie:

[Required] 
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)] 
[Display(Name = "Beginn")] 
public DateTime Start { get; set; } 

na moim komputerze lokalnym, wszystko jest w porządku, ale gdy próbuję zapisać pole na instancji Windows Azure pojawia się komunikat sprawdzania poprawności:

Wartość "22 .08.2011" nie jest odpowiednia dla Beginn.

Zarówno lokalnie, jak i w chmurze, używając tej samej bazy danych (Azure SQL). Jestem zdezorientowany. Jakiś pomysł jak to naprawić?

Odpowiedz

7

Atrybut DisplayFormat (jak sugeruje nazwa) służy tylko do wyświetlania wartości właściwości przy użyciu określonego formatu. Nie ma to absolutnie nic wspólnego z walidacją.

W tym przypadku sprawdzanie poprawności wykonywane jest przez domyślny moduł modelowania, gdy próbuje ustawić łańcuch POSTed na właściwość DateTime. Używa domyślnego ustawienia regionalne, które mogłyby być podany w web.config pomocą elementu Globalizacja:

<system.web> 
    ... 
    <globalization culture="de-DE" uiCulture="de-DE"/> 
</system.web> 

Powodem Twój kod nie działa, gdy wdrożyć go na Azure przykład dlatego, że są szanse, że serwer jest skonfigurowany do korzystania kultura en-US, dla której format daty jest inny.

Jeśli chcesz użyć bardziej konkretnego formatu, możesz również napisać niestandardowy segregator modelu dla swojego modelu widoku, a wewnątrz ręcznie przeanalizować wartość POSTed, używając tego specjalnego niestandardowego formatu.

+0

Teraz to rozumiem. Dziękuję, że rozwiązałeś problem. – Gesh

Powiązane problemy