web-dev-qa-db-fra.com

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

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

@Html.EnableClientValidation()

Mais je continue à recevoir ce message d'erreur:

Message d'erreur du compilateur: CS1502: La meilleure correspondance de méthode surchargée pour 'Microsoft.WebPages.WebPageUltimateBase.Write (Microsoft.WebPages.Helpers.HelperResult)' contient des arguments non valides

Cela fonctionne-t-il pour quelqu'un d'autre, ou s'agit-il d'une autre approche à cet égard dans ASP MVC 3?

38
Martin

Vous pouvez plutôt utiliser ce qui suit à la place de la ligne de code attendue. 

@(ViewContext.ClientValidationEnabled = true)

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

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

@{ Html.EnableClientValidation(); }
75
Buildstarted

Dans ASP.NET MVC3, il n’est pas nécessaire d’ajouter Html.EnableClientValidation () à la page d’affichage. Vous devez simplement activer clientValidation dans le fichier webconfig comme indiqué ci-dessous:

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

cette balise

     @{ Html.EnableClientValidation(false); }

doit venir avant la 

  @using (Html.BeginForm())
6
marcelo

Utilisez-vous l'élément 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 compris que c'était parce que je n'utilisais pas Html.BeginForm pour créer mon FORM, ce qui donnait les attributs d'entrée obligatoires data-val-required="The Email field is required." data-val="true" class="input-validation-error et que le paramètre fictif pour la validation n'était pas injecté dans la page alors que j'avais la @Html.ValidationMessageFor(m => m.User.Role) insérée sur ma page de vue.

4
Simon

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

Assurez-vous d'utiliser:

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