Vedo che ci sono alcune domande simili a questo, ma nessuno risolve il mio problema.Convalida MVC3 con ComponentModel.DataAnnotazioni per il formato data britannico (anche utilizzando jquery ui datepicker)
Sto lavorando a un'app MVC3 con Entity Framework 4.3. Ho un campo di date nel Regno Unito che ho intenzione di consentire all'utente di modificare utilizzando il Datepicker dell'interfaccia utente di Jquery (che ho lavorato grazie a this blog).
Fortunatamente per me questo blog include istruzioni su come rendere il datapicker usando il formato UK, tuttavia la convalida EF mi sta ancora dicendo che devo inserire un formato di data valido. Per quanto non mi impedisca di inviare la data al DB, è solo la convalida non invadente che avvia e mostra il messaggio.
Al momento ho la seguente annotazione di dati:
[DataType(DataType.Date)]
public System.DateTime Module_Date { get; set; }
ma ho anche provato ad aggiungere:
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
che ha avuto alcun effetto. Spero che qualcuno abbia una soluzione perché non mi piace disattivare la convalida non invadente per fermare questo messaggio di errore.
Grazie
EDIT
seguenti risposta @Iridio, ho guardato in aggiunta di un modello vincolante, e in effetti dai pochi posti come questo che ho letto sembrava essere la cosa giusta da fare , ma quello che ho trovato non ha alcun effetto. Ecco quello che ho provato:
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 questo nel metodo del file Global.asax.cs
Application_Start()
:
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());
Credo che si riferisca alle note System.ComponentModel.DataAnnotation piuttosto che alle annotazioni dei dati EntityFramework? Se hai seguito il blog, allora specifichi il formato dei dati '{dateFormat:" gg/mm/aa "}' nel tuo script lato client? In tal caso, quale versione dello script ui jquery stai usando? – Dangerous
oooh hai ragione, sto usando i modelli ComponentModel. Mi sono abituato a usare gli EF sull'ultimo progetto. aggiornerà. Stavo usando jquery ui 1.8.7 ma ho aggiornato al più tardi secondo la tua risposta qui sotto senza alcun risultato – Ben
oh e sì ho specificato '{dateFormat:" gg/mm/aaaa "}' – Ben