7
votes

ASP.NET MVC BOOTSTRAP Date de validation date de la date de la date

J'essaie d'obtenir le bottestrap DatePicker pour travailler. J'ai suivi les instructions de ces sources:

Comment ajouter une date de sélecteur de date bootstrap 3 sur le projet MVC 5 à l'aide du moteur de rasoir? (Réponse bei enzero) p>

& p>

http://bootstrap-datepicker.readthedocs.org/en/latest/OptionS.htm#format p>

Le problème est que, au lieu de l'American Common American MM / DD / Format de Yyyy, Je veux utiliser le format allemand (dd.mm.yyyyy) em>. J'ai donc fait ce qui suit: p>

dans le modèle: p> xxx pré>

dans web.config: p> xxx pré>

Dans scripts \ datepickeready.js: p> xxx pré>

Le résultat est-ce: p>

qui est essentiellement ce que je veux. Le problème est maintenant que la validation indique que le format de date est faux. "La donnée de terrain doit être de date" Entrez la description de l'image ici p>

La question est donc la question, pourquoi la validation n'accepte pas la date? strong> p>

EDIT # 1: strong> p>

J'utilise également une plaque d'éditeurs à la date: (Vues / partagées / EditTorTorplates / date.cshtml): p>

if (!Modernizr.inputtypes.date) {
    $(function () {
        var date = new Date();
        date.setDate(date.getDate());
        $(".datecontrol").datepicker({
            startDate: date,
            format: 'dd.mm.yyyy',
            autoclose: true,
            todayHighlight: true,
            weekStart: 1,
            language: 'de-DE',
            calendarWeeks: true
        });
    });
}


4 Réponses :


2
votes

Ma configuration: Modèle: xxx

vue: xxx

J'ai la culture ru-ru, mais au format de la date, il est égal à DE-DE. Soudainement, ça marche.


6 commentaires

Merci pour votre réponse, mais je viens de lire que le displayFormat n'est pas utilisé du tout lorsque vous utilisez une zone de texte. Consultez mon message mis à jour pour l'EditTorTemplate I Use. Cela pourrait expliquer pourquoi la validation avec l'affichageFormat ne fonctionne pas. J'ai aussi juste essayé votre solution sans succès. C'est logique si la zone de texte ne se soucie pas de DisplayFormat.


@zuckerthoben Oui, j'ai oublié cela, vous devez utiliser l'éditeur pour. Donc, ma solution ne doit pas utiliser DatePicker à partir de JQuery, utilisez le format d'éditeur et d'affichage I Publié


Ensuite, je vais toujours utiliser HTML5 DatePicker, non? Ensuite, c'est-à-dire que les utilisateurs ne peuvent pas l'utiliser. C'est la raison pour laquelle je veux utiliser le bottestrap DatePicker. Ça a aussi l'air bien.


@zuckerthoben Oui, oui, tu as raison. J'ai vraiment oublié cela, je vais explorer mon projet aujourd'hui soir et essayer de trouver la réponse


Merci pour votre engagement. @Backs


@zuckerthoben avez-vous ma variante?



0
votes

J'ai eu un problème similaire une fois. Je devais changer ma culture d'interface utilisateur (dans web.config), puis cela a commencé à valider correctement. Alors, essayez quelque chose comme ceci:

$('.datepicker').datepicker({
   language: "de-DE"
});


5 commentaires

c'est ce que j'ai écrit dans le post. Pour une meilleure lecture, je coupe tout inutile.


Désolé, je l'ai manqué. Avez-vous également essayé de définir la langue sur la date du datpicker (voir mon édition)


J'ai aussi essayé ça. Le DatePicker lui-même renvoie le format correct, c'est juste un problème de validation qu'il semble. Consultez ma mise à jour pour mon code actuel DatePicker.


La dernière chose à laquelle je peux penser: Regardez votre modèle d'éditeur, dans la valeur de la zone de texte, vous semblez remplacer le format d'affichage que vous avez défini dans le modèle. Essayez de changer


Le format que le DatePicker fournit déjà exactement. Au lieu de cultureinfo.getcultureInfo, je viens d'essayer dt.tostring ("dd.mm.yyyyy"), parce que je ne veux pas le temps derrière la date. Avec ce que la datePicker délivre le format correct, mais il a également fait ce pré-changement. C'est juste la validation de la sortie DatePicker. Je désactiverais la validation de ce champ, si je savais comment, parce que la date datchiquera toujours une date correctement formatée et, sinon, je peux toujours lancer une erreur après le poste du contrôleur.



3
votes

J'ai eu un problème similaire lorsque je voulais utiliser "DD mmm aaaa aaaa" comme format de date et que la solution consistait à écrire mon propre code de validateur JQuery.

$(function () {
    try {
        $.validator.addMethod('date',
        function (value, element) {
            if (this.optional(element)) {
                return true;
            }
            var ok = true;
            try {
                ok = moment(value, "dd.mm.yyyy", true).isValid();   
            } catch (err) {
                ok = false;
            }
            return ok;
        });
    } catch (e) { }
});


2 commentaires

Et comment implémentez-vous cela sur la page? omet-tu d'omettre JQueryval?


Je viens de l'avoir sur ma page d'affichage dans une section de scripts afin qu'elle soit rendue dans la page de sortie. Je n'utilise pas le forfait JQueryval dans mon code, vous devriez donc être correct pour l'omettre.



0
votes

Voici mon scénario:

Bundleconfig.cs: P>

<script>
    (function($, Globalize) {

        // Clone original methods we want to call into
        var originalMethods = {
            min: $.validator.methods.min,
            max: $.validator.methods.max,
            range: $.validator.methods.range
        };

        // Tell the validator that we want numbers parsed using Globalize

        $.validator.methods.number = function(value, element) {
            var val = Globalize.parseFloat(value);
            return this.optional(element) || ($.isNumeric(val));
        };

        // Tell the validator that we want dates parsed using Globalize

        $.validator.methods.date = function(value, element) {
            var val = Globalize.parseDate(value);
            return this.optional(element) || (val);
        };

        // Tell the validator that we want numbers parsed using Globalize,
        // then call into original implementation with parsed value

        $.validator.methods.min = function(value, element, param) {
            var val = Globalize.parseFloat(value);
            return originalMethods.min.call(this, val, element, param);
        };

        $.validator.methods.max = function(value, element, param) {
            var val = Globalize.parseFloat(value);
            return originalMethods.max.call(this, val, element, param);
        };

        $.validator.methods.range = function(value, element, param) {
            var val = Globalize.parseFloat(value);
            return originalMethods.range.call(this, val, element, param);
        };

    }(jQuery, Globalize));


    $().ready(function() {

        var currentCulture = '@Thread.CurrentThread.CurrentUICulture.ToString()';
        Globalize.culture(currentCulture);

        $('.form-date').datepicker({
            language: '@Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName',
            todayBtn: "linked"
        });

    });
</script>


1 commentaires

Salut, merci de votre réponse. Je vais regarder cela à une date ultérieure!