2010-06-15 33 views
8

tengo vista con los siguientes elementos que funciona:¿Qué puede causar que el método Html.ValidateFor() produzca un error de compilación?

<%= Html.TextBoxFor(m => m.FirstName, new { @class = "required_field_light" }) %> 
<%= Html.ValidationMessageFor(m => m.FirstName) %> 

Sin embargo, si cambio el ValidationMessageFor() a un ValidateFor() así:

<%= Html.ValidateFor(m => m.FirstName) %> 

consigo este error de compilación:

"The best overloaded method match for 'System.IO.TextWriter.Write(char)' has some invalid arguments" 
"Argument '1': cannot convert from 'void' to 'char'" 

Supongo que me falta algo en alguna parte, pero no puedo entender de qué se trata. ¿Alguien más ha encontrado este problema y ha encontrado una solución, o alguien tiene una idea de cómo resolver esto?

Respuesta

13

Desde ValidateFor() devuelve void, lo llaman así:

<% Html.ValidateFor(m => m.FirstName); %> 

(. Tenga en cuenta ningún signo igual; adición de punto y coma)

+0

hizo el truco. Gracias. –

5

Para aquellos de ustedes usando la maquinilla de afeitar, puede hacer lo mismo con

@{ Html.ValidateFor(x => x.FirstName); } 

en lugar del habitual

@Html.ValidateFor(x => x.FirstName) 

Una vez más, como fue mencionado por Levi, porque ValidateFor devuelve void, no MvcHtmlString como la mayoría de los métodos Html.. Y en esa nota, que no tiene ni idea de lo que estás haciendo, si usted está tratando de utilizar Html.ValidateFor Apostaría que en realidad se desea utilizar:

@Html.ValidationMessageFor(x => x.FirstName) 
+0

Tu último fragmento de código, creo que te refieres a @ Html.ValidationMessageFor (x => x.FirstName) – Graham

+0

Gracias, actualizado. –

Cuestiones relacionadas