2

J'ai implémenté le nouveau javascript discret dans mon projet mvc 3 (en utilisant RC1). J'ai ajouté les 3 scripts requis à une page de mise en page "maître". Tout fonctionne bien.MVC 3 Impossible de désactiver javascript discret

Cependant, j'ai une vue où je veux utiliser une validation jquery normale pour valider une zone de texte. Pour être exact, je veux vérifier qu'une entrée existe, et qu'elle est numérique.

donc sur la page mes js ressemble donc ...

<script language="javascript" type="text/javascript"> 
$(document).ready(function(){ 
    $('#SomeForm').validate({ 
     errorClass: "field-validation-error", 
     validClass: "field-validation-none", 
     errorElement: "label", 
     rules: { 
      ItemCount: { 
       required: true, 
       number: true 
      } 
     }, 
     messages: { 
      ItemCount: { 
       required: "Please specify the number of items available", 
       number: "Please specify a valid number" 
      } 
     } 
    }); 
}); 

Cependant, cela ne fonctionnait pas. Donc, sur ma page de mise en page principale, j'ai commenté la référence au fichier jquery.validate.unobtrusive.min.js et hey presto cela a fonctionné. J'ai donc pensé que cela devait être quelque chose à voir avec les morceaux discrets, donc si je l'éteins (ce que j'avais lu que vous pouvez) tout ira bien.

Ainsi, dans la page de vue j'ai ajouté la ligne suivante

Html.EnableUnobtrusiveJavaScript(false); 

Mais pas de joie. La seule façon de le faire fonctionner est de supprimer la référence au fichier js discret.

Cela ne peut certainement pas être le cas. Je dois être stoppid droit?

Merci D

Répondre

6

jquery.validate.unobtrusive.min.js enregistre déjà une fonction validate sur la forme qui est en conflit avec votre propre. Ainsi, au lieu d'appeler la fonction validate, vous pouvez essayer adding rules.

$("#myinput").rules("add", { 
    required: true, 
    minlength: 2, 
    messages: { 
     required: "Required input", 
     minlength: jQuery.format("Please, at least {0} characters are necessary") 
    } 
}); 
0

Quelle version de MVC3 êtes-vous est-il CTP, bêta ou RC? Cela fonctionne bien pour moi en RC utilisant Razor. S'il vous plaît poster le code de la vue.

+0

C'est le RC, mais Darins a fourni la réponse. Merci d'avoir regardé. –

0

Essayez d'aller web.config et trouver ceci:

Et mis UnobtrusiveJavaScriptEnabled à false. Cependant, il peut y avoir plus de clés.

+1

Il ne voulait pas l'éteindre pour tout, juste pour une vue spécifique. – jgauffin

+0

@jgauffin: Etes-vous sûr d'avoir modifié le fichier web.config correct? – gligoran

1

Je pense que la nouvelle carte jQuery Unobtrusive est conçue de telle sorte que vous l'activez pour le tout ou rien, vous ne pouvez pas l'activer/désactiver conditionnellement pour une vue spécifique.

+0

Apparemment, c'est vrai. – lnaie

Questions connexes