2010-09-12 13 views
38

cerco di aggiungere la validazione lato client utilizza questa riga di codice:abilitare la convalida cliente in vista Razor (ASP MVC 3)

@Html.EnableClientValidation()

Ma io continuo a ricevere questo messaggio di errore:

Compiler Messaggio di errore: CS1502: La partita metodo migliore overload per 'Microsoft.WebPages.WebPageUltimateBase.Write (Microsoft.WebPages.Helpers.HelperResult)' ha alcuni argomenti non validi

`la wor re per chiunque altro, o è un altro approccio per questo in ASP MVC 3?

risposta

75

È possibile, invece, utilizzare quanto segue al posto della riga di codice prevista.

@(ViewContext.ClientValidationEnabled = true) 

Probabilmente una svista nei metodi di estensione per HtmlHelper.

In realtà, è possibile utilizzare il metodo HtmlHelper effettuando le seguenti

@{ Html.EnableClientValidation(); } 
+0

Grazie per la risposta, ma quando ho messo la vostra linea di codice in vista tutto ciò che fa è uscita 'true' nella pagina. Devo posizionare il codice in qualche luogo speciale? Ora lo sto posizionando appena sopra il mio '@using (Ajax.BeginForm (...' – Martin

+0

Strano, non l'ho notato prima, grazie :) – Buildstarted

+10

La ragione per cui non funziona con @ è perché @ si aspetta di scrivere qualcosa al browser ma EnableClientValidation non restituisce nulla, quindi Microsoft.WebPages.WebPageUltimateBase.Write non riesce come risultato – Buildstarted

63

Hey, in ASP.NET MVC3, non c'è bisogno di aggiungere Html.EnableClientValidation() nella pagina di visualizzazione, invece, basta attivare la clientValidation nel file WebConfig come di seguito:

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

btw, è anche possibile posizionare js jqueryvalidation nella vista o nella pagina di layout. – bearing09

+5

Sì: NuGet [jQuery.Validation.Unobtrusive] (http://nuget.org/packages/jQuery.Validation.Unobtrusive) e aggiungere ' 'per entrambi' jquery.validate.min.js' e 'jquery.validate.unobtrusive.min.js'. –

4

si sta utilizzando l'elemento HTML <form> sulla tua pagina invece di Html.BeginForm per creare il vostro modulo HTML.

Ho avuto questo stesso problema e ha funzionato è stato perché il non stavo usando Html.BeginForm per creare la mia forma che comporti l'ingresso richiesto attributi data-val-required="The Email field is required." data-val="true" class="input-validation-error e il segnaposto per la convalida non veniva iniettato nella pagina, anche se i aveva il @Html.ValidationMessageFor(m => m.User.Role) inserito nella mia pagina di visualizzazione.

6

questo tag

 @{ Html.EnableClientValidation(false); } 

deve venire prima del

@using (Html.BeginForm()) 
0

Nel mio caso, non stavo usando EditorFor, ma TextBoxFor!

assicurarsi di utilizzare:

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