2010-09-12 46 views
38

intento agregar validación del lado del cliente utilizando esta línea de código:Habilitar validación del cliente en vistas Razor (ASP MVC 3)

@Html.EnableClientValidation()

Pero me siguen dando este mensaje de error:

Compilador Mensaje de error: CS1502: El partido mejor método sobrecargado para 'Microsoft.WebPages.WebPageUltimateBase.Write (Microsoft.WebPages.Helpers.HelperResult)' tiene algunos argumentos no válidos

Es ésta WOR rey para cualquier otra persona, o es otro enfoque para esto en ASP MVC 3?

Respuesta

75

En su lugar, puede utilizar lo siguiente en lugar de la línea de código esperada.

@(ViewContext.ClientValidationEnabled = true) 

Probablemente un descuido en los métodos de extensión para htmlhelper.

En realidad, puede utilizar el método HtmlHelper haciendo lo siguiente

@{ Html.EnableClientValidation(); } 
+0

Gracias por su respuesta, pero cuando pongo su línea de código en la vista de todo lo que hace es salida de 'true' en la página. ¿Debo colocar el código en algún lugar especial? Ahora estoy colocando justo encima de mi '@using (Ajax.BeginForm (...' – Martin

+0

Extraño, no me di cuenta antes, gracias :) – Buildstarted

+10

La razón por la que no funciona con solo @ es porque @ espera escribir algo al navegador, pero EnableClientValidation no devuelve nada, por lo que Microsoft.WebPages.WebPageUltimateBase.Write falla como resultado. – Buildstarted

63

Hey, en ASP.NET MVC3, no hay necesidad de añadir Html.EnableClientValidation() en la página de vista, en cambio, simplemente permitir que el clientValidation en el archivo webconfig de la siguiente manera:

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

Por cierto, también debe colocar jqueryvalidation js archivos en su vista o su página de diseño. – bearing09

+5

Sí: NuGet [jQuery.Validation.Unobtrusive] (http://nuget.org/packages/jQuery.Validation.Unobtrusive) y agregue ' 'para ambos' jquery.validate.min.js' y 'jquery.validate.unobtrusive.min.js'. –

4

¿Está usando el elemento html <form> en su página en lugar de Html.BeginForm para crear su formulario hTML.

tenía este mismo problema y funcionó fue porque el yo no utilizaba Html.BeginForm para crear mi que dé lugar a la entrada requerida atributos data-val-required="The Email field is required." data-val="true" class="input-validation-error y no estaba siendo inyectado el marcador de posición para la validación en la página aunque yo tenía el @Html.ValidationMessageFor(m => m.User.Role) insertado en mi página de vista.

6

esta etiqueta

 @{ Html.EnableClientValidation(false); } 

debe llegar antes de la

@using (Html.BeginForm()) 
0

En mi caso, yo no estaba usando EditorFor, pero TextBoxFor!

asegúrese de usar:

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