Veo que hay algunas preguntas similares a esto, pero ninguna resuelve mi problema.MVC3 Validación con ComponentModel.DataAnnotations para el formato de fecha del Reino Unido (también usando jquery ui datepicker)
Estoy trabajando en una aplicación MVC3 con Entity Framework 4.3. Tengo un campo de fecha del Reino Unido que planeo permitir que el usuario edite usando el marcador de fecha Jquery UI (que he obtenido gracias al this blog).
Afortunadamente para mí este blog incluye instrucciones para hacer el datepicker usando el formato del Reino Unido, sin embargo, la validación de EF todavía me dice que necesito ingresar un formato de fecha válido. Curiosamente, esto no me impide enviar la fecha al DB; es solo la validación discreta que inicia y muestra el mensaje.
Por el momento tengo la siguiente anotación de datos:
[DataType(DataType.Date)]
public System.DateTime Module_Date { get; set; }
pero también he intentado añadir:
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
el cual no tuvo ningún efecto en absoluto. Espero que alguien tenga una solución porque no me apetece desactivar la validación discreta para detener este mensaje de error.
Gracias
EDITAR
siguientes @Iridio respuesta, miré en la adición de un modelo de unión, y de hecho a partir de los pocos puestos como este que lo leí parecían ser lo que hay que hacer , pero lo que se me ocurrió no tiene ningún efecto. Esto es lo que he intentado:
public class DateTimeBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var date = value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);
return date;
}
}
con esto en el método del archivo Global.asax.cs
Application_Start()
:
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());
Creo que su referencia a System.ComponentModel.DataAnnotations en lugar de las anotaciones de datos EntityFramework? Si siguió el blog, ¿especifica el formato de datos '{dateFormat:" dd/mm/aa "}' en su script del lado del cliente? De ser así, ¿qué versión de la secuencia de comandos de jquery ui está usando? – Dangerous
oooh tienes razón, estoy usando los ComponentModel. Me acostumbré a usar los EF en el último proyecto. actualizará. Estaba usando jquery ui 1.8.7 pero he actualizado a la última según su respuesta a continuación en vano – Ben
oh y sí he especificado '{dateFormat:" dd/mm/aaaa "}' – Ben