12
votes

MVC 4 Comment valider une date non américaine avec la validation du client?

J'ai une situation où j'ai des problèmes avec la validation du côté du client d'un champ DateTime. Lorsque j'essaie de soumettre, il ne me dis pas que la date est invalide (27/7/2013). Mais si j'avive la date au format américain, cela fonctionne (07/27/2013).

Mon modèle de vue est le suivant, P>

<globalization culture="en-AU" uiCulture="en-AU" />


4 commentaires

J'espère que vous le trouverez utile


désolé je ne l'ai pas trouvé utile, je n'utilise aucun validateur fluide


Jetez un coup d'œil à Stackoverflow.com/Questtions/11272851/... , la réponse acceptée doit résoudre le problème.


J'ai essayé ça, ça n'a pas fonctionné non plus. J'ai créé un nouveau projet MVC 4 et ajouté une date de date à la page d'enregistrement. Toujours le même problème. Sûrement quelque chose comme ça devrait être facile à faire ouais? Voici mon projet dl.dropboxusercontent.com/87611366/mvcapplication2.zip


4 Réponses :


-2
votes

Essayez avec ceci,

vue xxx

modèle xxx < / pré>


2 commentaires

même résultat .. ne fonctionne pas ... sûrement, il doit être quelque chose de pas si compliqué de changer la culture


Cela ne répond pas à l'erreur dans la validation des clients, qui est le problème



4
votes

Lorsque vous utilisez la validation de JQuery pour les dates, vous découvrirez qu'il ne fonctionne pas bien pour les dates utilisant Chrome. Cela se produit lorsque vous utilisez une locale non américaine.

La solution a présenté à Fixation Validation de date non-américaine JQuery pour Chrome


0 commentaires

27
votes

Quelqu'un d'autre a trié cela pour moi, c'était tout à faire avec la validation du côté client JQuery. Merci encore asymptoticfault .. vous rock .. MVC 4 Date Culture Problème de la culture?

Voici les informations de ce lien que je Utilisé ... p>

Le problème est la validation de JQuery qui ne comptait pas la culture lors de l'analyse d'une date. Si vous éteignez la validation du côté du client, la date est analysée simplement sur le serveur qui est conscient de la culture. P>

Le correctif consiste à remplacer la validation de JQuery à la date et à inclure un plugin supplémentaire de globalisation de jQuery. Vous pouvez trouver le plug-in ici . Vous pouvez également télécharger facilement le plugin à l'aide du gestionnaire de packages Nuget également. Je viens d'ouvrir le gestionnaire de paquets, sélectionné l'onglet en ligne à gauche et dactylographié "globalize" dans la recherche et c'était le premier résultat. Une fois que vous l'avez installé, j'ai inclus ces deux fichiers: p> xxx pré>

Vous pouvez les inclure directement à l'aide d'une étiquette de script ou de les placer dans un paquet, peut-être avec les autres fichiers de validation de jQuery . P>

Une fois que vous aurez d'autres que vous aurez besoin d'ajouter le script suivant pour remplacer la validation de JQuery à la date: P>

<script type="text/javascript">
    $(function () {
        $.validator.methods.date = function (value, element) {
            Globalize.culture("en-AU");
            // you can alternatively pass the culture to parseDate instead of
            // setting the culture above, like so:
            // parseDate(value, null, "en-AU")
            return this.optional(element) || Globalize.parseDate(value) !== null;
        }
    });
</script>


2 commentaires

Serait bien si vous avez également fourni le gist de la réponse ici si le lien meurt.


Cela fonctionnait bien, mais quand j'ai téléchargé Globalizejs avec Nuget ( Nuget.org/packages/jQuery-globalize ) Le fichier "globalize.culture.en-au.js" n'était pas là, mais n'est pas nécessaire. Cela fonctionnait bien avec "globalize.js"



10
votes

Les problèmes de validation des clients peuvent survenir en raison de la bogue MVC (même dans MVC 5) dans jquery.validate.unobtrivant.min.js qui n'accepte pas le format Date / DateTime en quelque sorte < / fort>. Malheureusement, vous devez le résoudre manuellement.

ma solution de travail enfin:

Vous devez inclure avant: xxx

Vous pouvez installer moment.js : xxx

et ensuite vous pouvez enfin ajouter un correctif pour le format de date d'analyseur: xxx


1 commentaires

Merci, n'hésitez pas à utiliser n'importe quel format de date que vous voulez (moment.js peut gérer tout ce que je suppose). :)