38 votes

Activer la validation du client dans les vues Razor (ASP MVC 3)

J'essaie d'ajouter la validation côté client en utilisant cette ligne de code :

@Html.EnableClientValidation()

Mais je continue à obtenir ce message d'erreur :

Message d'erreur du compilateur : CS1502 : La meilleure méthode surchargée correspondant à 'Microsoft.WebPages.WebPageUltimateBase.Write(Microsoft.WebPages.Helpers.HelperResult)' possède des arguments invalides.

Est-ce que cela fonctionne pour quelqu'un d'autre, ou y a-t-il une autre approche pour cela dans ASP MVC 3 ?

75voto

BuildStarted Points 15931

Vous pouvez, à la place, utiliser ce qui suit à la place de la ligne de code prévue.

@(ViewContext.ClientValidationEnabled = true)

Probablement un oubli dans les méthodes d'extension de htmlhelper.

En fait, vous pouvez utiliser la méthode HtmlHelper en procédant comme suit

@{ Html.EnableClientValidation(); }

67voto

bearing09 Points 589

Hé, dans ASP.NET MVC3, il n'y a pas besoin d'ajouter Html.EnableClientValidation() dans la page de vue, au lieu de cela, il suffit d'activer le clientValidation dans le fichier webconfig comme ci-dessous :

<appSettings>
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

6voto

marcelo Points 51

Cette étiquette

     @{ Html.EnableClientValidation(false); }

doit venir avant le

  @using (Html.BeginForm())

4voto

Simon Points 172

Utilisez-vous le code html <form> sur votre page au lieu de Html.BeginForm pour créer votre formulaire html.

J'ai eu exactement le même problème et j'ai découvert que c'était parce que je n'utilisais pas le système d'alarme. Html.BeginForm pour créer mon FORM et obtenir les attributs d'entrée requis. data-val-required="The Email field is required." data-val="true" class="input-validation-error et le substitut de validation n'était pas injecté dans la page, même si j'avais l'attribut @Html.ValidationMessageFor(m => m.User.Role) inséré sur ma page d'affichage.

0voto

MaurGi Points 40

Dans mon cas, je n'utilisais pas EditorFor, mais TextBoxFor !

Assurez-vous d'utiliser :

             <td>@Html.EditorFor(m => m.Email)</td>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X