2011-08-20 12 views
6

Ho un problema con un errore di convalida che viene visualizzato solo in Windows Azure, ma non nell'emulatore di Azure locale.Problema di convalida con Windows Azure, EF e MVC3

Nel mio modello ho una classe con un attributo "Start" e un DisplayFormat per il formato della data tedesco:

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

sulla mia macchina locale, tutto va bene, ma quando provo a salvare il campo in un'istanza di Windows Azure viene visualizzato questo messaggio di convalida:

Il valore '22 .08.2011 'non è valido per Beginn.

Entrambi (locale e cloud) utilizzano lo stesso database (SQL di Azure). Quindi, sono confuso. Qualche idea su come risolvere questo problema?

risposta

7

L'attributo DisplayFormat (come suggerisce il nome) viene utilizzato solo per visualizzare il valore della proprietà utilizzando il formato specificato. Non ha assolutamente nulla a che fare con la convalida.

In questo caso la convalida del modello predefinita viene eseguita quando tenta di impostare la stringa POST su una proprietà DateTime. Esso utilizza l'impostazione internazionale predefinita che potrebbe essere specificato nel vostro web.config utilizzando l'elemento globalizzazione:

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

Il motivo per il codice non funziona quando si distribuisce sulla istanza Azure è perché è probabile che il server è configurato per l'utilizzo la cultura en-US per cui il formato della data e ora è diverso.

Se si desidera utilizzare un formato più specifico, è anche possibile scrivere un raccoglitore modello personalizzato per il modello di visualizzazione e analizzare manualmente il valore POSTed utilizzando questo formato personalizzato speciale.

+0

Ora ho capito. Grazie, questo ha risolto il problema. – Gesh

Problemi correlati