2011-08-20 15 views
6

Tengo un problema con un error de validación que solo aparece en Windows Azure, pero no en el emulador de Azure local.Problema de validación con Windows Azure, EF y MVC3

En mi modelo que tengo una clase con un atributo "Inicio" y una formatSalida para el formato de fecha alemán:

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

en mi máquina local, todo está bien, pero cuando trato de guardar el campo en una instancia de Windows Azure obtengo este mensaje de validación:

El valor '22 .08.2011 'no es válido para Beginn.

Ambos (local y en la nube) utilizando la misma base de datos (Azure SQL). Entonces, estoy confundido. ¿Algúna idea de cómo arreglar esto?

Respuesta

7

El atributo DisplayFormat (como su nombre indica) se usa solo para mostrar el valor de la propiedad utilizando el formato especificado. No tiene absolutamente nada que ver con la validación.

En este caso, la validación es realizada por el archivador de modelo predeterminado cuando intenta establecer la cadena POSTed en una propiedad DateTime. Se utiliza la configuración regional predeterminada que podría ser especificada en su web.config utilizando el elemento de la globalización:

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

La razón por la que su código no funciona cuando se implementa en la instancia Azure es porque es probable que el servidor está configurado para utilizar la cultura en-US para la que el formato de fecha y hora es diferente.

Si desea utilizar un formato más específico, también puede escribir un encuadernador de modelo personalizado para su modelo de vista y en su interior analizar manualmente el valor POSTed utilizando este formato personalizado especial.

+0

Ahora lo entiendo. Gracias, eso resolvió el problema. – Gesh

Cuestiones relacionadas