ASP.Net 2012 Validation discrète avec jQuery

Je jouais avec Visual Studio 2012 et j’ai créé une application Web ASP.Net vide , lorsque j’ai essayé d’append les contrôles de validation traditionnels à une nouvelle page, cette erreur se produit:

WebForms UnobtrusiveValidationMode nécessite un scriptResourceMapping pour ‘jquery’. Veuillez append un scriptResourceMapping nommé jquery (sensible à la casse).

Quelles sont les étapes pour le réparer?

Ceci est mon balisage de page:

 

Il semble qu’il y ait beaucoup d’informations incorrectes sur la valeur ValidationSettings: UnobtrusiveValidationMode. Pour le désactiver, procédez comme suit.

  

Le mot Aucun, pas WebForms devrait être utilisé pour désactiver cette fonctionnalité.

Ceci est la réponse officielle de Microsoft sur les forums MS Connect . Je copie le texte pertinent ci-dessous: –

Lorsque vous ciblez .NET 4.5, la validation discrète est activée par défaut. Vous devez avoir jQuery dans votre projet et avoir quelque chose comme ça dans Global.asax pour enregistrer correctement jQuery:

 ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "~/scripts/jquery-1.4.1.min.js", DebugPath = "~/scripts/jquery-1.4.1.js", CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.1.min.js", CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.1.js" }); 

Remplacer la version de jQuery par la version que vous utilisez.

Vous pouvez également désactiver cette nouvelle fonctionnalité dans web.config en supprimant la ligne suivante:

  

Plus d’informations sur ValidationSettings: UnobtrusiveValidationMode

Spécifie comment ASP.NET permet globalement aux contrôles valideurs intégrés d’utiliser un code JavaScript discret pour la logique de validation côté client.

Type: UnobtrusiveValidationMode

Valeur par défaut: Aucun

Remarques: Si cette valeur de clé est définie sur “Aucun” [valeur par défaut], l’application ASP.NET utilisera le comportement antérieur à la version 4.5 (JavaScript intégré dans les pages) pour la logique de validation côté client. Si cette valeur de clé est définie sur “WebForms” , ASP.NET utilise les atsortingbuts de données HTML5 et le code JavaScript associé à une référence de script ajoutée pour la logique de validation côté client.

Exemple:

     

Autre que le “jquery” ScriptResourceDefinition dans Global.asax (utilisez vos propres chemins):

  protected void Application_Start(object sender, EventArgs e) { ScriptManager.ScriptResourceMapping.AddDefinition( "jquery", new ScriptResourceDefinition { Path = "/static/scripts/jquery-1.8.3.min.js", DebugPath = "/static/scripts/jquery-1.8.3.js", CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js", CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.js", CdnSupportsSecureConnection = true, LoadSuccessExpression = "jQuery" }); } 

Vous n’avez en outre qu’à append explicitement “WebUIValidation.js” après “jquery” ScriptReference dans ScriptManager (la partie la plus importante):

        

Si vous l’ajoutez avant “jquery”, ou si vous n’en ajoutez pas du tout ( ASP.Net l’appenda alors automatiquement avant “jquery”) – la validation du client sera complètement interrompue:

http://connect.microsoft.com/VisualStudio/feedback/details/748064/unobtrusive-validation-breaks-with-a-script-manager-on-the-page

Vous n’avez besoin d’aucun de ces paquets NuGet, ni d’aucune ScriptReference supplémentaire (dont certains ne sont que des doublons, voire une ScriptReference complètement inutile – car ils sont ajoutés automatiquement par ASP.Net si nécessaire) mentionnés dans votre blog.

EDIT: vous n’avez pas besoin d’append explicitement “WebForms.js” (l’a supprimé de l’exemple) – et si vous le faites, son LoadSuccessExpression sera ignoré pour une raison quelconque

Ajoutez une référence à Microsoft.JScript dans votre application dans votre web.config comme ci-dessous:

              

Toute l’erreur du validateur a été résolue par ceci

    

L’erreur doit disparaître

Copiez et collez tout fichier JQuery dans votre projet et ajoutez un Global.asax et modifiez-le comme suit:

Je viens de coller le fichier JQuery dans mon projet et d’append une référence dans le fichier Global.asax:

 protected void Application_Start(object sender, EventArgs e) { ScriptManager.ScriptResourceMapping.AddDefinition( "jquery", new ScriptResourceDefinition { Path = "~/jquery-1.10.2.js", DebugPath = "~/jquery-1.10.2.js", CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.min.js", CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.js", CdnSupportsSecureConnection = true, LoadSuccessExpression = "jQuery" }); } 

Dans le gestionnaire de packages Nuget, recherchez AspNet.ScriptManager.jQuery au lieu de jquery. De cette façon, vous ne devrez pas définir les mappages vous-même et le projet fonctionnera en un clic d’installation simple.

Ou désactivez la validation non intrusive en ajoutant cette ligne à la balise Configuration du fichier web.config du projet.

   

Dans “fichier de configuration” à la place, cette ligne:

   

par ces lignes:

   

Cette erreur, car la bibliothèque de la version 4.0 appartient à “asp: RequiredFieldValidator” existe, mais dans la version 4.5, la bibliothèque n’existe pas. Vous devez donc append la bibliothèque par vous-même

  

cette ligne n’était pas dans mon WebConfig donc: j’ai simplement résolu ce problème en rétrogradant la version cible .Net à 4.0 🙂

dans visual studio 2012 dans le web.config, changez le targetFramework = 4.5 en targetFramework = 4.0

Je propose plutôt cette ligne

 

par cette ligne