La valeur spécifiée n'est pas conforme au format aaaa-MM-jj

J'ai un .Net MVC 5 application à l'aide d'Annotations de Données, Entity Framework Jquery 2.1.3 et Jquery UI 1.11.4.

Quand je le rendu d'un formulaire d'édition avec un input de type date en utilisant le royaume-UNI format "jj/MM/AAAA"; le message d'erreur suivant s'affiche lorsque vous utilisez Google Chrome:

La valeur spécifiée '10/10/2001' n'est pas conforme à la forme "aaaa-MM-jj'. jquery-2.1.3.js:5317

Modèle

public class MyModel
{
    [Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public string MyDate { get; set; }
}

Marquer

<input class="text-box single-line" data-val="true" data-val-date="The field My date must be a date." id="MyDate" name="MyDate" type="date" value="10/10/2001" />

La valeur est définie correctement dans le contrôle d'entrée, mais la date n'apparaît pas dans le navigateur. J'ai d'abord pensé que c'était un problème avec jQuery comme c'est l'apparition de l'jQuery fichier de script, mais lors de l'essai de IE et Firefox, tout fonctionne bien.

J'ai alors cru que c'était mes paramètres régionaux dans google chrome en tant que par défaut de Chrome pense que tout le monde l'anglais est en Amérique, j'ai changé les paramètres régionaux au royaume-UNI et toujours le même problème apparaît.

Une solution simple serait de changer le format de mon modèle universel, mais pour les utilisateurs du royaume-UNI c'est un peu exotiques.

Est-il un moyen de dire à google chrome qui acceptent les formats de la date en "dd/MM/YYYY"?

  • Êtes-vous désireux de rendre les navigateurs HTML5 datepicker de mise en œuvre (ou êtes-vous à l'aide d'un plugin jquery)?
  • Je vous suggère d'utiliser datepicker ui de sorte que le format ISO est envoyé sur le serveur pendant que dd/MM/dddd sera configuré à côté client.
  • J'allais laisser le navigateur manipuler le sélecteur de date, donc il y a moins besoin d'une troisième partie de la bibliothèque.
  • Si vous utilisez le navigateur datepicker, votre besoin de spécifier l'attribut comme [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyInEditMode = true)]. Le navigateur va alors afficher la valeur dans les navigateurs les paramètres régionaux, mais après revenir le format ISO de sorte qu'il sera correctement lié. Mais note que c'est uniquement pris en charge dans les navigateurs modernes.
  • Faire cela rend également la date dans le format universel lors de l'utilisation de méthode displayfor() méthode d'assistance
  • Effet secondaire malheureux, mais la spécification html5, c'est qu'il doit être au format ISO. L'alternative est d'utiliser @Html.TextBoxFor(m => m.MyDate, ""{0:yyyy-MM-dd}", new { @type="date" }) et de laisser le [DisplayFormat] comme est.
  • Merci, maintenant il prend tout son sens. S'il vous plaît pouvez-vous mettre vos commentaires dans une réponse et je serai heureux de les accepter. Je vais juste remplacer la valeur par défaut DateTime modèle d'affichage la plus récente de la culture ou de force au royaume-UNI format.

InformationsquelleAutor Andy Clark | 2015-06-12